我的位置列表:如何在Javascript中重组对象?
[
{
"id": 1,
"name": "Location 1",
"city": {
"id": 7,
"name": "Phoenix",
}
},
{
"id": 2,
"name": "Location 2",
"city": {
"id": 7,
"name": "Phoenix",
}
},
{
"id": 3,
"name": "Location 3",
"city": {
"id": 11,
"name": "Los Angeles",
}
}
]
出的,我想创造城市的数组,每个城市有来自城市的位置。
结果举例:
[
{
"id": 7,
"name": "Phoenix",
"locations": [
// location objects from Phoenix (Location 1 and Location 2)
{
"id": 1,
"name": "Location 1",
"city": {
"id": 7,
"name": "Phoenix",
}
},
{
"id": 2,
"name": "Location 2",
"city": {
"id": 7,
"name": "Phoenix",
}
}
]
},
{
"id": 11,
"name": "Los Angeles",
"locations": [
// location objects from Los Angeles (Location 3)
{
"id": 3,
"name": "Location 3",
"city": {
"id": 11,
"name": "Los Angeles",
}
}
]
}
]
我一直在使用.map()
和.filter()
获得唯一值的城市阵列尝试。它并没有返回整个city
(return item.city
)的唯一,不同的值,所以我只使用name
属性(return item.city.name
),因为我并不真正在意城市ID。我的独特的城市名称的数组:
var cities = data.map(function (item) {
return item.city.name;
}).filter(function (value, index, self) {
return self.indexOf(value) === index;
});
现在我卡在构建阵列将列出位置为每个城市的属性。预先感谢您...
您的预计结果无效。 “位置”应该是一个对象还是一个数组? –
@Mark_M'locations'应该是一个对象数组。 – TommyZG