AngularJS:删除重复的对象并按值对数组进行重新排序
AngularJS: Remove duplicate objects and reorder an array by value
我使用的是json,这是一个结构:
{ "variants": [
{ "capacity":"A", "color":"1" },
{ "capacity":"A", "color":"2" },
{ "capacity":"B", "color":"3" }
]};
使用angular.forEach
或另一种方法,我想显示不重复的数据,重新排序并通过"容量"将其关联起来,类似于这样(一个新数组):
$scope.newArray = [
{ "capacity":"A", "color1":"1", "color2":"2" },
{ "capacity":"B", "color_1":"3" }
];
这可能是一种有角度的方式或简单的javascript,我需要帮助!
a = { 'variants': [
{'capacity': 'A','color': '1'},
{'capacity': 'A','color': '2'},
{'capacity': 'B','color': '3'},
]};
b = a.variants
c = b.reduce(function (prev, crt) {
prev[crt.capacity] = (prev[crt.capacity] || [
]).concat(crt.color)
return prev;
}, {})
// c is now {"A": ["1","2"], "B": ["3"]}
d = []
for (var name in c) {
if (c.hasOwnProperty(name)) {
f = {
'capacity': name
}
c[name].forEach(function (e) {
f['color' + e] = e;
})
// f is {"capacity": "A", "color1": "1","color2": "2"}
// and then {"capacity": "B", "color3": "3"}
d = d.concat(f)
}
}
// d is [{"capacity": "A", "color1": "1","color2": "2"},
// {"capacity": "B", "color3": "3"}]
相关文章:
- 按不同项目对对象数组进行排序
- 根据Javascript中的字符串值对数组的数组进行排序
- 对对象数组中的数组进行排序
- 按特定键对对象数组进行排序
- 尝试对对象数组进行排序但拼接不是一个函数
- 对javascript中某些键的对象数组进行排序
- 在jquery中对时间数组进行排序
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- 在Javascript中对具有特定异常的对象数组进行排序
- 数组数据排序类似mysql查询
- 按 [field] 值对 javascript 数组进行排序会给出错误的顺序
- 使用函数“sort”对javascript数组进行排序
- 按子属性(可能缺少)对对象的 javascript 数组进行排序
- 以不同的方式对相同的可观察数组进行排序
- 按多个属性对多维数组进行排序
- 空数组和排序推送键 JavaScript
- 如何使用不可变表示此数组重新排序示例
- Lodash 在 JavaScript 中对对象数组进行排序
- JavaScript 将文本框存储中的值引入数组中,创建新数组进行排序
- 对对象数组进行排序,并将具有相同键/值对的对象推送到新数组