-1

私はこの配列を持っているとしましょう

[{k:2, v:"Stack"}, {k:5, v:"Over"}, , {k:9, v:"flow"}]

値が5未満のすべてのキーのような要素を選択するにはどうすればよいですか?または、奇数のキーの場合は最初の2つの要素またはすべての値(オーバーフローを綴る)

for/foreachループを使用したくありません。一致するすべてのものに何かを適用できるjqueryのようなものを探しています。これが、グループクラスのdom内のすべてにnewclasspropertyを適用する方法のようなものです。

$('.group a').addClass('newclassproperty')
4

4 に答える 4

5

を使用するarray.filterと、ループは見えなくなります。

lessThan5 = array.filter(function (elem) {
    return elem.k <= 5;
});
于 2013-03-14T15:15:50.767 に答える
2

必要なブラウザのサポートに応じて、 JavaScript1.6Array.filterメソッドを探している可能性があります。

var arr = [{k:2, v:"Stack"}, {k:5, v:"Over"}, , {k:9, v:"flow"}]
var odds = arr.filter(function(item, index) {
  return !(item.k % 2)
});
var small = arr.filter(function(item, index) {
  return item.k < 5
});
var first = arr.slice(0, 2);
于 2013-03-14T15:18:11.013 に答える
1
$.each(result_data_array_from_json, function(key, value) {
      if(key <= 5){
             //your statements
      }
});
于 2013-03-14T15:18:31.217 に答える
0

現時点ではパフォーマンス上の理由から、プレーンループを使用して、これをカスタム関数にカプセル化するか(たとえば、独自のラッパー関数を拡張または使用することにより)、そのようなタスクにjQuery(= overkill)を使用することをお勧めしますArray.prototype

var t = [{k:2, v:"Stack"}, {k:5, v:"Over"}, , {k:9, v:"flow"}];
var r = [];

r = t.filter(function (elem) {
    return elem.k <= 5;
});

vs

for (var i = 0, l = t.length;i<=l;i++){
   if(t[i] && t[i].k <= 5){r.push(t[i])}
}

特定のケースのパフォーマンステストを参照してください。

于 2013-03-14T15:34:17.357 に答える