Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中循环时进行排名_Javascript_Arrays - Fatal编程技术网

Javascript 在数组中循环时进行排名

Javascript 在数组中循环时进行排名,javascript,arrays,Javascript,Arrays,所以我有一个函数,我已经通过一个类似于上面的对象数组进行了映射。我想根据计数向秩的对象添加第三个值。 我目前的想法是完成我已经在做的映射,然后根据计数对数据重新排序,然后根据数组中已排序的位置分配一个秩。但考虑到我已经在映射数组,这似乎有点冗长 香草JS: var testArray = [{ value: john, count: 5 }, { value: henry, count: 2 }, { value: bill, count: 10 }] testArra

所以我有一个函数,我已经通过一个类似于上面的对象数组进行了映射。我想根据计数向秩的对象添加第三个值。 我目前的想法是完成我已经在做的映射,然后根据计数对数据重新排序,然后根据数组中已排序的位置分配一个秩。但考虑到我已经在映射数组,这似乎有点冗长

香草JS:

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

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

另外,这是进行计算的功能性方法,应该有一个on*nlog n时间,你可以用命令式方法在on中进行,但我认为这更容易阅读/理解

编辑1 在作者的评论之后:想要将当前计数添加到项目中,我想不出有必要这样做的情况,只是为了放纵:

let newArray = testArray
.map(item => {
  return {
     ...item,
     newProperty: 'x'
   } 
}).sort((x, z) => x.count - z.count);

阅读更多关于

原始数组是否已排序?-以上不是…为什么你觉得这似乎很冗长?我会使用map函数将值添加到数组中,然后使用sort函数将值添加到数组中,其中传递一个比较计数的函数。原始值根本没有排序。这似乎很冗长,因为我已经在映射数组了。所以运行两张地图似乎很冗长,如果这有意义的话?谢谢,这是我想做的99%,完全有意义。然而,我想做的是将您拥有的作为新属性:“x”,我希望它与每个对象的计数值有一个关系。所以在这个例子中,x值是2,3,1,按计数的顺序。这有意义吗?为了弄清楚这一点,您希望每个对象保持为:{value:bill,count:10,newProperty:[2,3,1]}或者您只希望在迭代后获得[2,3,1]值?不,我希望每个对象保持为{value:bill,count:10,newProperty:1},其中新属性与计数相关。比尔的新属性是1,约翰的新属性是2,亨利的新属性是3。谢谢你回答了这个问题。顺便问一下,你为什么认为这是一件不寻常的事?
let newArray = testArray
.map(item => {
  return {
     ...item,
     newProperty: 'x'
   } 
}).sort((x, z) => x.count - z.count);
let newArray = testArray
.map((item, index) => {
  return {
     ...item,
     currentCount: index
   } 
}).sort((x, z) => x.count - z.count);