gpt4 book ai didi

javascript - NodeJS/JS - 基于另一个数组排序+高效移动元素

转载 作者:行者123 更新时间:2023-12-03 06:11:50 24 4
gpt4 key购买 nike

我有 2 个数组:

var one = ['da22', 'ye66', '17hy']

var 二 = [{publicID: 'da22', 分数: '2'}, {publicID: '17hy', 分数: '2'}, {publicID: 'ye66', 分数: '2' }]

我希望 two 根据 onepublicID 排序,所以应该是

two = [{publicID: 'da22', 分数: '2'}, {publicID: 'ye66', 分数: '2'}, {publicID: '17hy', 分数: '2'} ]

NodeJS 中有内置方法可以做到这一点吗?

我已经让它工作了,但效率不是很高。我有一种方法可以将元素从一个索引移动到另一个 moveFromTo(oldIndex, newIndex ),我正在使用它:

for (var r=0; r<one.length; r++) {
if (one[r] != two[r]['publicID']) {
two.moveFromTo(one.indexOf(two[r]['publicID']), r)
r=-1; continue;
}
}

但是必须在事物移动时使用 r=-1 - 尽管可行 - 似乎并不是最好的主意。

任何想法将不胜感激。

非常感谢。

最佳答案

您可以使用 sort()indexOf()

var one = ['da22', 'ye66', '17hy'];
var two = [{publicID: 'da22', score: '2'}, {publicID: '17hy', score: '2'}, {publicID: 'ye66', score: '2'}];

var result = two.sort(function(a, b) {
return one.indexOf(a.publicID) - one.indexOf(b.publicID);
})

console.log(result)

您还可以从一个创建对象并按该对象排序。

var one = ['da22', 'ye66', '17hy'];
var two = [{publicID: 'da22', score: '2'}, {publicID: '17hy', score: '2'}, {publicID: 'ye66', score: '2'}];

var o = one.reduce((r, e, i) => {return r[e]=i, r}, {});

var result = two.sort(function(a, b) {
return o[a.publicID] - o[b.publicID];
})

console.log(result)

关于javascript - NodeJS/JS - 基于另一个数组排序+高效移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com