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