var testArray = [{
value: john,
count: 5
},
{
value: henry,
count: 2
},
{
value: bill,
count: 10
}]
testArray.map(function(value) {
//otherfunctions
})
所以我有一个函数,我已经通过类似于上面的对象数组进行映射。我想根据计数向等级对象添加第三个值。 我目前的想法是完成我已经在做的地图,然后根据计数重新排序数据,然后根据数组中的排序位置分配排名。但是,鉴于我已经映射了阵列,这似乎是漫长的啰嗦?
答案 0 :(得分:1)
Vanilla JS:
var testArray = [{
value: john,
count: 5
},
{
value: henry,
count: 2
},
{
value: bill,
count: 10
}]
let newArray = testArray.map(function(item) {
return {
value: item.value,
count: item.count,
newProperty: 'x'
}
}).sort(function(x, z) {
return x.count - z.count;
});
ES6:
let newArray = testArray
.map(item => {
return {
...item,
newProperty: 'x'
}
}).sort((x, z) => x.count - z.count);
P.S。这是执行此计算的功能方式,应该具有ao(n * nlog n)时间,您可以使用命令式方法在ao(n)中执行此操作,但在我看来这更易于阅读/理解。
编辑1 在作者评论之后:想要将当前计数添加到项目中(不能想到这是必要的情况),只是沉迷于:
let newArray = testArray
.map((item, index) => {
return {
...item,
currentCount: index
}
}).sort((x, z) => x.count - z.count);
详细了解map