簡體   English   中英

JavaScript 將對象數組減少到 object 字典

[英]JavaScript Reduce Array of objects to object dictionary

我已經在 SO 上閱讀了這個答案,試圖了解我哪里出錯了,但還沒有完全到達那里。

我有這個 function:

get() {
    var result = {};

    this.filters.forEach(filter => result[filter.name] = filter.value);

    return result;
}

它變成了這樣:

[
    { name: "Some", value: "20160608" }
]

對此:

{ Some: "20160608" }

我想,這正是reduce的用途,我有一個數組,我想在它的末尾有一個值。

所以我想到了這個:

this.filters.reduce((result, filter) => {
    result[filter.name] = filter.value;
    return result;
});

但這不會產生正確的結果。

1) 我可以在這里使用 Reduce 嗎?

2)為什么它不產生正確的結果。

據我了解,第一次迭代的結果將是一些描述的空 object,但它是數組本身。

那么,您將如何在第一次迭代中重新定義它 - 這些想法讓人感覺在這種情況下它是不正確的!

將初始值設置為對象

this.filters = this.filters.reduce((result, filter) => {
    result[filter.name] = filter.value;
    return result;
},{});
//-^----------- here

 var filters = [{ name: "Some", value: "20160608" }]; filters = filters.reduce((result, filter) => { result[filter.name] = filter.value; return result; }, {}); console.log(filters);

 var filters = [{ name: "Some", value: "20160608" }]; filters = filters.reduce((result, {name, value}= filter) => (result[name] = value, result), {}); console.log(filters);

自 2019 年(ES2019)以來,您可以使用 go 和Object.fromEntries()但您需要先進行 map 陣列。

const filtersObject = Object.fromEntries(filters.map(({ name, value }) => [name, value])

暫無
暫無

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

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