簡體   English   中英

如何從 object 獲取數組,索引作為 object 屬性之一

[英]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.

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