0

いくつかの値を含む配列があります。入力フィールドの値が配列内に存在するかどうかを確認できるようにしたい。私のコードは今何も返していません。

HTML

<input type="text" id="str_search" value=" "/>
<input type="button" id="search_str" value="search" />

Javascript

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val();
        // alert(find(array,src_keyword));
        find(array, src_keyword)
    });
});

function find(arr, src_keyword1) {
    var result = [];
    alert(src_keyword1);
    // src_keyword1="oo";
    for (var i in arr) {
        var search = new RegExp(src_keyword1, "gi");
        if (arr[i].match(search)) {
            alert(arr[i])
            result.push(arr[i]);
        }
    }
    return result;
}

前もって感謝します

4

5 に答える 5

2

フォーク:- http://jsfiddle.net/jfy8J/

おそらく、コードが機能しないのは、テキスト ボックスの値にスペースがあり、それをトリミングしていないためです。

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
        var res = $.grep(array,function(obj,_){
            return obj === src_keyword;
        });
       if(res.length == 0) alert('not found'); else alert('found');
    });
});

見つからない値を取得する更新:- http://jsfiddle.net/ELqZS/

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
       var items = $.grep(array,function(obj,_){
            return obj !== src_keyword;
        });
    alert(items);
    });
});

更新 2は、検索テキストhttp://jsfiddle.net/8FJYS/を持つ配列から項目を返します

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
      var items =  array.filter(function(o, _){
            return o.indexOf(src_keyword) > -1;
        });
    alert(items);
    });
});
于 2013-04-24T21:33:21.500 に答える
1

forループを次から変更します

for (var i in arr)

for (var i=0; i < arr.length; i++)

前者のループは、オブジェクトのすべてのプロパティと各インデックス付き要素の値を反復処理します。例えば

var a = [7,8,9,0];
a.blah = "aoeusnth";
for (var prop in a) {
    console.log(prop);
}

ログに記録します

7
8
9
0
"blah"

コンソールに。

変数「i」を使用して配列の値にアクセスしていますが、コードでは「i」はすでに値です。必要なのは、アイテムにアクセスするためにアイテムのインデックスを使用することです。

于 2013-04-24T21:29:43.160 に答える
0

テスト プロセスを逆にします。今、result文字列の文字列をテストしていsearchます。あなたはそれを逆にしたい。

regexptest()メソッドを使用します。そう...

var search = new RegExp(src_keyword1, "gi");
if(search.test(arr[i])){....}

もちろん、RegExp他の小さな変更の中で、コンストラクターをループから取り出すことができるようになりました....

于 2013-04-24T21:39:19.090 に答える
0

.indexOf() を使用するだけです

$("#search_str").click(function () {
  src_keyword = $("#str_search").val().trim();
  alert(array.indexOf(src_keyword) !== -1);
});
于 2013-04-24T21:32:43.027 に答える
0

正規表現ソリューションではなくArray.indexOfを使用したいと思います。

概要

指定された要素が配列内で見つかる最初のインデックスを返します。存在しない場合は -1 を返します。

<input type="text" id="str_search" value=" " />
<input type="button" id="search_str" value="search" />

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
        alert(array.indexOf(src_keyword) !== -1);
    });
});

jsfiddle

于 2013-04-24T21:46:43.117 に答える