簡體   English   中英

從具有相似值的對象數組中獲取所有對象

[英]Get all object from array of objects having similar value

假設我在數組中有5個這樣的對象:

var myObjects = [{a: 1, b: 2}, {a: 3, b: 4}, {a: 1, b: 6}, {a: 3, b: 8}, {a: 1, b: 9}];

我如何遍歷此myObjects並獲得具有相似值a = 1對象。 例如。 {a: 1, b: 2},{a: 1, b: 6},{a: 1, b: 9}

使用Array.prototype.filter

var result = myObjects.filter(function(e) {
    return e.a === 1;
});

MDN為不支持此方法的舊版瀏覽器提供了polyfill

如果要基於屬性a對對象進行分組,則可以使用以下方法:

var result = {};

for (var i = 0, len = myObjects.length; i < len; i++) {
    var obj = myObjects[i];

    if (result[obj.a] === undefined) {
        result[obj.a] = [];
    }

    result[obj.a].push(obj);
}

console.log(result);

擴展@VisioN的答案:您可以使用工廠函數,該工廠函數本身將返回要按以下條件進行過濾的函數:

function filterAByValue(value) {
  return function(item) {
    return item.a === value;
  };
}

var result = myObjects.filter(filterAByValue(1));

甚至使屬性變量:

function filterPropertyByValue(property, value) {
  return function(item) {
    return item[property] === value;
  };
}

var result = myObjects.filter(filterPropertyByValue("a", 1));

嘗試這個

var index[];
for(i=0;i<obj.lenght;i++)
{
    if(obj[i].a==1)
    {
       index.push(i);
       //you even can push obj[i] to some other array and use it
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM