[英]how to get array from object with index as one of the object property
我有一個 object
const items = {
"123": {
"key": 123,
"name": "one name",
},
"456": {
"key": 456,
"name": "two name",
},
"789": {
"key": 789,
"name": "three name",
},
};
需要從下面的數組中過濾,數組索引為 object.key
const myFilter = [123,789];
我正在嘗試的代碼如下,但它返回數組 inedx 為 0,1,2... 但我需要索引為 object.key。
let selectedItems = myFilter.map((key) => {
return items[key];
});
當前 output:
[0:{
key: 123,
name: "one name"
}, 1: {
key: 789,
name: "three name"
}]
預計 Output
[123:{
key: 123,
name: "one name"
}, 789: {
key: 789,
name: "three name"
}]
jsfiddle - https://jsfiddle.net/kb374exh/2/
您的實際 output 實際上是正確的,並且是將myFilter
數組映射到items
的匹配屬性的唯一可能結果。
const items = { "123": { "key": 123, "name": "one name", }, "456": { "key": 456, "name": "two name", }, "789": { "key": 789, "name": "three name", }, }; const myFilter = [123, 789]; const selectedItems = myFilter.map((key) => items[key]); console.log(selectedItems);
您看到的記錄的 output 包括數組索引。 您可能會在登錄瀏覽器時看到包含的索引。
如果您想要一個原始鍵是新索引的對象數組,那么您可能做的最好的事情就是一個長度為 <highest key> 的數組和一堆根本未定義的“洞”。
const items = { "123": { "key": 123, "name": "one name", }, "456": { "key": 456, "name": "two name", }, "789": { "key": 789, "name": "three name", }, }; const myFilter = [123, 789]; const selectedItems = Object.entries(items).reduce((selectedItems, [key, value]) => { if (myFilter.includes(value.key)) selectedItems[key] = value; return selectedItems; }, []); console.log(selectedItems);
如果你對結果是 object 沒意見,那么你可以有更簡潔的 output,你基本上會得到一個 object 過濾掉的鍵值對。
const items = { "123": { "key": 123, "name": "one name", }, "456": { "key": 456, "name": "two name", }, "789": { "key": 789, "name": "three name", }, }; const myFilter = [123, 789]; const selectedItems = Object.fromEntries(Object.entries(items).filter(([, value]) => myFilter.includes(value.key))); console.log(selectedItems);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.