1
我想過濾包含對象的object
以僅獲取包含具有特定值的數組的對象。對象的Array_map?
這是對象:
Object
-Object[0]
--Title
--Date
--Specs [Array]
---- [0] Name: "Power"
---- [0] Value: 5
---- [1] Name: "Weight"
---- [1] Value: 100
-Object[1]
--Title
--Date
--Specs [Array]
---- [0] Name: "Height"
---- [0] Value: 100
---- [1] Name: "Weight"
---- [1] Value: 100
因此,我想,只有包含對象,其中specs
- 陣列包含與Name
「電源」的條目的對象。
我試着用這樣的array_map來解決這個問題:
return this.items.map((obj) => {
let valObj = obj.specs.filter(function (elem) {
if (elem.Name == "Power") return elem.Value;
});
if (valObj.length > 0) {
return obj;
}
});
但不幸的是array_map只對數組的作品,正如其名字已經告訴;-)
所以:有沒有解決的好辦法這個問題?
更新:
創建一個工作代碼,但也許不是真正的優雅;-)
itemsWithPower: function() {
var items = items;
var list = [];
var result = Object.keys(items).map(function(key) {
return items[key].Specs.filter(function(elem) {
if (elem.Name === "Power") list.push(items[key]);
});
});
console.log(list);
}
嗨,剛纔試了一下,回來'類型錯誤:不確定是不是(評估「鍵」)' – SPQRInc
@SPQRInc的對象 - 那麼你沒有你已經什麼SH擁有我們?可能'this.items [key]'是一個數組,我編輯了答案 – adeneo
Hi @ adeneo,'this.items'是一個包含其他對象的對象。每個對象都包含一些信息(標題,ID和'specs'數組)。我剛剛從'console.log(this.items)'創建了一個截圖:http://imgur.com/a/NCr1y 我希望這有助於嗎? – SPQRInc