我是JS
的新手。我有一个如下所示的对象列表,
var a = [
{
wa_id: 1,
wa_property_id: 'p1',
wa_view_name: 'ram'
},
{
wa_id: 1,
wa_property_id: 'p1',
wa_view_name: 'sam'
},
{
wa_id: 1,
wa_property_id: 'p2',
wa_view_name: 'kam'
},
{
wa_id: 2,
wa_property_id: 'p5',
wa_view_name: 'pri'
},
{
wa_id: 1,
wa_property_id: 'p3',
wa_view_name: 'ste',
},
]
我想遍历这些对象并创建一个新的单独对象。我想要如下所示的所需输出
必需的输出:
{
"1": {
"p1": ["ram", "sam"],
"p2": ["kam"],
"p3": ["ste"]
},
"2": {
"p5": ["pri"]
}
}
这是我尝试过的代码,
var a = [{
wa_id: 1,
wa_property_id: 'p1',
wa_view_name: 'ram'
},
{
wa_id: 1,
wa_property_id: 'p1',
wa_view_name: 'sam'
},
{
wa_id: 1,
wa_property_id: 'p2',
wa_view_name: 'kam'
},
{
wa_id: 2,
wa_property_id: 'p5',
wa_view_name: 'pri'
},
{
wa_id: 1,
wa_property_id: 'p3',
wa_view_name: 'ste',
},
]
temp_obj = {}
temp_list = []
for (var j = 0; j < a.length; j++) {
temp_list.push(a[j].wa_property_id)
}
temp_list.splice(0, temp_list.length, ...(new Set(temp_list)))
// Property ID List
console.log(temp_list)
// Output: ["p1","p2","p5","p3"]
properyViewObj = {}
temp_list2 = []
for (var j = 0; j < temp_list.length; j++) {
for (var k = 0; k < a.length; k++) {
if (a[k].wa_property_id == temp_list[j]) {
temp_list2.push(a[k].wa_view_name)
}
}
properyViewObj[temp_list[j]] = temp_list2
temp_list2 = []
}
// Property with Viewnames
console.log(properyViewObj)
// Output: {p1: ["ram","sam"],p2: ["kam"],p5: ["pri"],p3: ["ste"]}
var wa_list = []
for (var j = 0; j < a.length; j++) {
wa_list.push(a[j].wa_id)
}
wa_list.splice(0, wa_list.length, ...(new Set(wa_list)))
// Wa_id List
console.log(wa_list)
// Output: [1,2]
// How to make the Next Step
var output = {}
var tem = []
for (var j = 0; j < wa_list.length; j++) {
for (var k = 0; k < a.length; k++) {
if (a[k].wa_id == wa_list[j]) {
console.log(a[k].wa_property_id)
}
}
}
您可以尝试将数组缩小为对象
您可以使用reduce
您可以采用一组键并减少结果对象。
您可以使用ES6方法来实现