red*_*e16 2 javascript arrays sorting data-manipulation
我的函数下面返回一个对象,该对象包含playerPoints通过"对象数组"参数传入的已排序.如果不修改传入的数组,是否有更高效/更高效的方法来添加元素并按升序对数组进行排序?
注意:对象数组可以包含一个或多个对象.在效率方面,我指的是完成时间(速度).函数ascendingSort也是必需的,不能替换.
var data = [{playerPoints: 10}, {playerPoints: 8}, {playerPoints: 2}, {playerPoints: 21},{playerPoints: 30}];
function ascendingSort(players) {
var points = [];
for(var i = 0; i < players.length; i++) {
points.push(players[i].playerPoints);
}
points.sort(function(a, b) {return a - b;});
return {sortedPoints: points};
}
var obj = ascendingSort(data);
console.log(obj);Run Code Online (Sandbox Code Playgroud)
要简化此功能,可以使用该map()方法将对象映射到playerPoints属性.此外,您可以将传递给sort()method(function(a, b) {return a - b;})的常规函数更改为箭头函数((a, b) => a - b).
const data = [{playerPoints: 10}, {playerPoints: 8}, {playerPoints: 2}, {playerPoints: 21},{playerPoints: 30}]
function ascendingSort(players) {
return {
sortedPoints: data.map(x => x.playerPoints).sort((a, b) => a - b)
}
}
const obj = ascendingSort(data)
console.log(obj)Run Code Online (Sandbox Code Playgroud)
至于性能,我怀疑有一个比你已有的更快的解决方案.