javascriptで条件を満たす行を抜き出す方法

otaguro 315views 更新:2014年8月14日

Arrayのfilterメソッドを使えば、条件を満たす行だけを抜き出すことが出来ます。
sortメソッドと似たような使い方ですが、
filterの引数には、boolを返す関数を指定する必要があります。
関数がtrueを返す配列の要素だけが残ります。

次の例は、指定した文字(初期値は=)以降の文字列が重複している行だけを表示するjavascriptです。

data:text/html, 
<!DOCTYPE html>
<html contenteditable>
<head>
<title>Do</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>

<script language="JavaScript">
function doScript(val){
var array=val.split(/\r?\n/g);

compStr=document.getElementById('compStr').value;


var val=array.filter(compare).join("\r");

document.getElementById('result').value =val;
}

function compare(value,index,array){
 if(value.indexOf(compStr)==-1)return false;

 var compArray = new Array(array.length);
 for (var i = 0; i < array.length; i++) {
    if(array[i].indexOf(compStr)==-1){compArray[i]=null;}
    else{compArray[i]=array[i].substr(array[i].indexOf(compStr));}
 }

 var compvalue=value.substr(value.indexOf(compStr));

 for (var i = 0; i < compArray.length; i++) {
    if(compvalue==compArray[i]&& i!=index )return true;
 }
 return false;
}

</script>

<form id="editor" action="/search" method="GET" onsubmit="doScript(this.val.value);return false;">
<textarea name="val" > value</textarea><input type="submit" value="DoScript"/>
</form>

<pre><textarea id="compStr">=</textarea></pre>
<textarea id="result">result</textarea>

</body>
</html>

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません