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-谢谢。这是一个干净的解决方案。将它添加到答案中。