1

配列 JavaScript に対してクエリを実行するにはどうすればよいですか。たとえば、A で始まるすべての名前を検索し、すべての情報を表示したい

名前":"アルバート","年齢":"14"
名前":"アリソン","年齢":"14"

これは私の配列jsonです:

var house = [{"Name":"Jason","age":"43"},
{"Name":"Albert","age":"14"},
{"Name":"Luck","age":"14"},
{"Name":"Alison","age":"14"},
{"Name":"Tom","age":"12"}]
4

4 に答える 4

5

使用できますArray.filter

var result = house.filter(function(o) {
    return o.Name.indexOf("A") === 0;
});

一部の古いブラウザでは、この方法がサポートされていない場合があります。MDN互換性と回避策を確認してください。

于 2013-01-27T16:45:02.277 に答える
3

使用できますArray.prototype.filter

var names_beginning_a = house.filter(
    function (item) {return item["Name"][0].toLowerCase() === 'a';}
);

これを取得したら、およびを使用してデータを文字列に変換できますJSON.stringifyArray.prototype.map

var dataAsString = names_beginning_a.map(
    function (item) {return JSON.stringify(item);} // optionally trim off { and }
);
于 2013-01-27T16:44:59.347 に答える
2

配列をフィルタリングして、名前が「A」の要素を収集してから forEach するか、一致をプロパティ名と値の新しい配列にマップできます

house.filter(function(itm){
    return itm.Name.charAt(0)== 'A';
}).map(function(o){
    var A= [];
    for(var p in o){
        if(o.hasOwnProperty(p)){
            A.push(p+':'+o[p]);
        }
    }
    return A;
}).join('\n');

/* 戻り値: (文字列)*/

Name:Albert,age:14
Name:Alison,age:14

シムが必要な場合:

(function(){
    var A= Array.prototype;
    if(!A.filter)   A.filter= function(fun, scope){
        var T= this, A= [], i= 0, itm, L= T.length;
        if(typeof fun== 'function'){
            while(i<L){
                if(i in T){
                    itm= T[i];
                    if(fun.call(scope, itm, i, T)) A[A.length]= itm;
                }
                ++i;
            }
        }
        return A;
    }
    if(!A.map) A.map= function(fun, scope){
        var T= this, L= T.length, A= Array(L), i= 0;
        if(typeof fun== 'function'){
            while(i<L){
                if(i in T){
                    A[i]= fun.call(scope, T[i], i, T);
                }
                ++i;
            }
            return A;
        }
    }
}
})();
于 2013-01-27T16:52:39.947 に答える
1

grep関数を使用することもできます

arr = jQuery.grep(house, function (a) { return a.Name.indexOf("A") === 0; });

http://jsfiddle.net/vYZBb/

于 2013-01-27T16:49:04.767 に答える