LANG SELRCT

コードを書く場所についてはこちら

2018年6月24日日曜日

2つの配列で共通するものと新しく追加されるものを抽出する


やりたいこと
  • input1とinput2のキーワードを比較する
  • input1とinput2の両方に存在するものをsameに出力する
  • input2にしか存在しないものをnew_wordに出力する




デモ






コード.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile("index");
}
意訳
この機能がやること
指定したHTMLファイルを表示する




index.html
<!DOCTYPE html>
<html>
  <head>
    <style>
      textarea {
        width: 240px;
        height: 360px;
      }
    </style>
  </head>
<body>
  <textarea id="ta1" placeholder="input1"></textarea>
  <textarea id="ta2" placeholder="input2"></textarea>
  <textarea id="same" placeholder="same" disabled></textarea>
  <textarea id="new_word" placeholder="new_word" disabled></textarea>

<script>
function get_elem(id){
  return document.getElementById(id);
}

var ta1 = get_elem("ta1");
var ta2 = get_elem("ta2");
var same = get_elem("same");
var new_word = get_elem("new_word");

ta1.onkeyup = ta_keyup;
ta2.onkeyup = ta_keyup;

/************************************
ta1とta2にキーワード一覧コピペすると

sameには共通のキーワードが出力される
new_wordにはta2にあってta1にないキーワードが出力される
************************************/
function ta_keyup(){
  var ta_values = ta1.value.split("\n");
  var ta2_values = ta2.value.split("\n");
  var filtered = filter_array(ta_values, ta2_values)
  same.value = same_words.join("\n");
  new_word.value = new_words.join("\n");
}

/************************************
same_wordsとnew_wordsを抽出する
************************************/
var same_words;
var new_words;
var value;

function filter_array(array, array2) {
  new_words = [];
  same_words = [];
  for(var i = 0; i < array2.length; i++){//obj2の要素数だけ繰り返す
    value = array2[i];//obj2のenを一つずつ取得
    var filtered = array.filter(judge);
    
    var result = get_result(filtered);
    same_or_new(result, i, array2)
  }
}

function judge(obj_item) {
  var result = value === obj_item;
  return result;
}

function get_result(filtered) {
  var result = [];
  for (var i = 0; i < filtered.length; i++) {
    result.push(filtered[i]);
  }
  return result;
}

function same_or_new(result, i, array2){
  if(result == ""){
    new_words.push(array2[i]);
  }else if(result != ""){
    same_words.push(array2[i]);
  }
}
</script>
</body>
</html>