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

Javascript 按另一个索引数组对数组进行排序,javascript,arrays,sorting,d3.js,Javascript,Arrays,Sorting,D3.js,我对数组对进行迭代,我需要按一个对另一个的顺序进行排序 假设我有两个数组: 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的顺序 我不知道如何将此命令应用于眨眼 var linkOrder = []; linkSets.

我对数组对进行迭代,我需要按一个对另一个的顺序进行排序

假设我有两个数组:

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的顺序

我不知道如何将此命令应用于眨眼

var linkOrder = [];

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

  set.aLinks.forEach(function(link,i){
    linkOrder.push(link.path);
  })
});
最后得到的结果是A+sortA-B-所以只需要计算两个数组之间的差值。使用一些方便的方法,例如:

var A = [4,5,6];
var B = [1,2,3,4,5,6];

var diff = _.difference(A,B);

var result = _.flattern(A, diff.sort());
最后得到的结果是A+sortA-B-所以只需要计算两个数组之间的差值。使用一些方便的方法,例如:

var A = [4,5,6];
var B = [1,2,3,4,5,6];

var diff = _.difference(A,B);

var result = _.flattern(A, diff.sort());

迭代第一个数组,从第二个数组中删除值,然后将它们附加到数组的开头,以获得正确的顺序:

var arr1 = [4,5,6];
var arr2 = [1,2,3,4,6,5];

arr1.sort(function(a,b) {return a-b;});

for (i=arr1.length; i--;) {
    arr2.splice(arr2.indexOf(arr1[i]), 1);
    arr2.unshift( arr1[i] );
}

迭代第一个数组,从第二个数组中删除值,然后将它们附加到数组的开头,以获得正确的顺序:

var arr1 = [4,5,6];
var arr2 = [1,2,3,4,6,5];

arr1.sort(function(a,b) {return a-b;});

for (i=arr1.length; i--;) {
    arr2.splice(arr2.indexOf(arr1[i]), 1);
    arr2.unshift( arr1[i] );
}
你可以这样做:

将第二个数组中的匹配项取出到临时数组中 对临时数组排序 对仅包含不匹配项的第二个数组进行排序 将第二个数组连接到临时数组中 代码-用户提供的修复程序:basilikum

工作演示:

您可以像这样做:

将第二个数组中的匹配项取出到临时数组中 对临时数组排序 对仅包含不匹配项的第二个数组进行排序 将第二个数组连接到临时数组中 代码-用户提供的修复程序:basilikum


工作演示:

发布一些代码。到目前为止,你都尝试了什么?也发布一些关于你的表达的更多信息。如果第一个数组中的一个项目不在第二个数组中,或者如果第二个数组多次包含第一个数组中的一个项目,该怎么办?如果第一个数组是[6,5,4],那么第二个数组应该以[4,5,6]开始,即排序,还是[6,5,4]匹配第一个数组中的顺序。发布一些代码。到目前为止,你都尝试了什么?也发布一些关于你的表达的更多信息。如果第一个数组中的一个项目不在第二个数组中,或者如果第二个数组多次包含第一个数组中的一个项目,该怎么办?如果第一个数组是[6,5,4],那么第二个数组应该以[4,5,6]开始,即排序,还是与第一个数组中的顺序匹配[6,5,4]。谢谢!这也解决了第一个数组中的项目无法在第二个数组中排序的问题。如果需要,这里是techfoobar的fiddle的升级版本,它可以处理第二个数组中的多个事件:@basilikum-谢谢。这是一个干净的解决方案。将其添加到答案中。谢谢!这也解决了第一个数组中的项目无法在第二个数组中排序的问题。如果需要,这里是techfoobar的fiddle的升级版本,它可以处理第二个数组中的多个事件:@basilikum-谢谢。这是一个干净的解决方案。将它添加到答案中。