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