【发布时间】:2021-03-30 02:56:51
【问题描述】:
我想转换一个数组以重新组合同一国家/地区的所有城市。 我有一个对象数组
locations = [
{
cities: ["Paris"]
country: "France"
},
{
cities: ["Marseille"]
country: "France"
},
{
cities: ["Kiev"]
country: "Ukraine"
},
{
cities: ["Odessa"]
country: "Ukraine"
}
...
我想要这个:
locations = [
{
cities: ["Paris", "Marseille"]
country: "France"
},
{
cities: ["Kiev, Odessa"]
country: "Ukraine"
},
...
所以,我的想法是:
locations.reduce((prev, curr) => {
if (prev.country === curr.country) {
prev.cities.push(curr.cities[0])
// and delete curr Object
}
})
对于第一对 equals 国家,curr.cities[0] 被推送到 prev.cities,但不用于下一次迭代: TypeError:无法读取未定义的属性“国家/地区”
[![console.log(locations) - TypeError: Cannot read property 'country' of undefined][1]][1]
【问题讨论】:
-
您能否分享每个
cities数组中的值以及您在转换对象后尝试获得的结果? -
你不会从 reduce 内部函数返回 prev。所以在下一次迭代中 prev 不存在。
标签: javascript arrays filter functional-programming reduce