循环遍历数组javascript

时间:2017-01-31 21:50:12

标签: javascript arrays

var testArray = [{
  value: john,
  count: 5
},
{
  value: henry,
  count: 2
},
{
  value: bill,
  count: 10
}]

testArray.map(function(value) {
  //otherfunctions
})

所以我有一个函数,我已经通过类似于上面的对象数组进行映射。我想根据计数向等级对象添加第三个值。 我目前的想法是完成我已经在做的地图,然后根据计数重新排序数据,然后根据数组中的排序位置分配排名。但是,鉴于我已经映射了阵列,这似乎是漫长的啰嗦?

1 个答案:

答案 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