使用 reduce 获取带有对象的对象
Using reduce to get object with objects
我有以下形式的数组:
[
{key: "key1", value: value1}
{key: "key2", value: value2}
{key: "key3", value: value3}
...
]
我需要转换成下面的形式:
{ { key1 : value1}, { key2 : value2}, { key3 : value3} }
如何使用 reduce() 实现?
我正在尝试使用此代码:
var someObject = this.someArray.reduce(function(acc, item) {
return { [item.key]: item.value};
}, {});
但我总是只得到最后一项,而不是全部。
问题出在您的 return
return acc + { [item.key]: item.value};
您不能对 add
对象使用 +
运算符。尝试以下操作:
acc[item.key] = item.value;
return acc
这假设您的 keys
都是独一无二的。请参阅下面的完整示例:
let x = [{
key: "key1",
value: 'value1'
},
{
key: "key2",
value: 'value2'
},
{
key: "key3",
value: 'value3'
},
].reduce((accumulatedValue, curentValue) => {
accumulatedValue[curentValue.key] = curentValue.value;
return accumulatedValue
}, {})
console.log(x);
要么你求一个对象数组,那么下面的例子适用:
const res = [{
key: 'key1',
value: 'value1',
}, {
key: 'key1',
value: 'value1',
}, {
key: 'key1',
value: 'value1',
}].reduce((tmp, {
key,
value,
}) => [
...tmp,
{
[key]: value,
},
], []);
console.log(res);
要么你求一个独特的对象,那么下面的例子适用:
const res = [{
key: 'key1',
value: 'value1',
}, {
key: 'key2',
value: 'value2',
}, {
key: 'key3',
value: 'value3',
}].reduce((tmp, {
key,
value,
}) => ({
...tmp,
[key]: value,
}), {});
console.log(res);
关于您的代码,正如人们已经在评论中告诉您的那样,您不能简单地使用 +
运算符来连接数组或对象。
我有以下形式的数组:
[
{key: "key1", value: value1}
{key: "key2", value: value2}
{key: "key3", value: value3}
...
]
我需要转换成下面的形式:
{ { key1 : value1}, { key2 : value2}, { key3 : value3} }
如何使用 reduce() 实现?
我正在尝试使用此代码:
var someObject = this.someArray.reduce(function(acc, item) {
return { [item.key]: item.value};
}, {});
但我总是只得到最后一项,而不是全部。
问题出在您的 return
return acc + { [item.key]: item.value};
您不能对 add
对象使用 +
运算符。尝试以下操作:
acc[item.key] = item.value;
return acc
这假设您的 keys
都是独一无二的。请参阅下面的完整示例:
let x = [{
key: "key1",
value: 'value1'
},
{
key: "key2",
value: 'value2'
},
{
key: "key3",
value: 'value3'
},
].reduce((accumulatedValue, curentValue) => {
accumulatedValue[curentValue.key] = curentValue.value;
return accumulatedValue
}, {})
console.log(x);
要么你求一个对象数组,那么下面的例子适用:
const res = [{
key: 'key1',
value: 'value1',
}, {
key: 'key1',
value: 'value1',
}, {
key: 'key1',
value: 'value1',
}].reduce((tmp, {
key,
value,
}) => [
...tmp,
{
[key]: value,
},
], []);
console.log(res);
要么你求一个独特的对象,那么下面的例子适用:
const res = [{
key: 'key1',
value: 'value1',
}, {
key: 'key2',
value: 'value2',
}, {
key: 'key3',
value: 'value3',
}].reduce((tmp, {
key,
value,
}) => ({
...tmp,
[key]: value,
}), {});
console.log(res);
关于您的代码,正如人们已经在评论中告诉您的那样,您不能简单地使用 +
运算符来连接数组或对象。