gpt4 book ai didi

javascript - 按另一个索引数组对数组进行排序

转载 作者:行者123 更新时间:2023-11-30 07:41:15 25 4
gpt4 key购买 nike

我正在迭代数组对,我需要按照另一个的顺序对其中一个进行排序。

假设我有这两个数组:

aLinks = [4,5,6]
bLinks = [1,2,3,4,5,6]

我需要返回:

aLinks = [4,5,6]
bLinks = [4,5,6,1,2,3]

意思是我需要首先匹配第一个数组的项目,然后才是其他项目,如果可能,按顺序排序。

我正在使用 d3,所以我使用 forEach 遍历链接集并保存 aLinks 的顺序。

我不知道如何将此顺序应用于 bLinks

var linkOrder = [];

linkSets.forEach(function(set, i) {
linkOrder = [];

set.aLinks.forEach(function(link,i){
linkOrder.push(link.path);
})
});

最佳答案

你可以这样做:

  1. 从第二个数组中取出匹配项放入临时数组
  2. 对临时数组进行排序
  3. 对仅包含不匹配项目的第二个数组进行排序
  4. 将第二个数组连接到临时数组中

代码 - 使用用户提供的修复:basilikum

var first = [4,5,6];
var second = [1,7,3,4,6,5,6];
var temp = [], i = 0, p = -1;

// numerical comparator
function compare(a, b) { return a - b; }

// take out matching items from second array into a temp array
for(i=0; i<first.length; i++) {
while ((p = second.indexOf(first[i])) !== -1) {
temp.push(first[i]);
second.splice(p, 1);
}
}

// sort both arrays
temp.sort(compare);
second.sort(compare);

// concat
temp = temp.concat(second);
console.log(temp);

工作演示:http://jsfiddle.net/kHhFQ/

关于javascript - 按另一个索引数组对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16759404/

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