编写一个名为“sort-kvs”的函数,该函数以键值存储的列表/数组作为参数,其中每个键值存储都有键“power”、“purification”、“strike”、“ability”和“spin”映射到整数值。根据“纯度”键处的值对输入进行排序。
function sort_kvs(lista){
lista.sort(function(x){return x['purity']});
return lista;
}
我做错什么了?
输入时功能排序不正确
[[{'strike': 11, 'power': 249, 'ability': 5, 'purity': 19, 'spin': 13}, {'strike': 18, 'power': 247, 'ability': 20, 'purity': 6, 'spin': 487}, {'strike': 11, 'power': 201, 'ability': -8, 'purity': 10, 'spin': 489}, {'strike': -17, 'power': 290, 'ability': 14, 'purity': 16, 'spin': 269}]]
结果:
[{'strike': -17, 'power': 290, 'ability': 14, 'purity': 16, 'spin': 269}, {'strike': 11, 'power': 201, 'ability': -8, 'purity': 10, 'spin': 489}, {'strike': 18, 'power': 247, 'ability': 20, 'purity': 6, 'spin': 487}, {'strike': 11, 'power': 249, 'ability': 5, 'purity': 19, 'spin': 13}]
预期:
[{'strike': 18, 'power': 247, 'ability': 20, 'purity': 6, 'spin': 487}, {'strike': 11, 'power': 201, 'ability': -8, 'purity': 10, 'spin': 489}, {'strike': -17, 'power': 290, 'ability': 14, 'purity': 16, 'spin': 269}, {'strike': 11, 'power': 249, 'ability': 5, 'purity': 19, 'spin': 13}]
最佳答案
sort
的回调函数接受两个参数-一个是要比较的项,另一个是要比较的项因此,使用这两个参数调用sort
,然后访问每个参数的purity
属性,并返回差异:
const sort_kvs = arr => arr.sort((a, b) => a.purity - b.purity);
const input=[[{'strike':11,'power':249,'ability':5,'purity':19,'spin':13},{'strike':18,'power':247,'ability':20,'purity':6,'spin':487},{'strike':11,'power':201,'ability':-8,'purity':10,'spin':489},{'strike':-17,'power':290,'ability':14,'purity':16,'spin':269}]];
console.log(sort_kvs(input[0]));