基于javascript中位置的数组差异

时间:2015-03-26 05:34:06

标签: javascript angularjs underscore.js

我尝试了多种方法来解决这个问题,任何抬头都会有很大的帮助。 我在我的项目中使用ng-draggable.js进行拖放功能,所以最初我将元素设置为array A,当我将一个元素拖放到数组中时,我不知道如何用位置捕获该数组中已更改的元素。 说A = [1,2,3]现在客户通过拖放功能改变位置。 它变为B = [2,1,3]。当我执行A and B的差异时,我必须使用位置获取已更改的元素[2,1],以便我可以将其发送到具有更新位置的服务器元素。 我试过underscore.js _.difference(A,B),它给了我空数组

1 个答案:

答案 0 :(得分:0)

似乎.difference()返回设置差异,但索引在这里很重要:



var a = [1,2,3];
var b = [2,1,3];
var diff = a.filter(function(value, index) {
    return b[index] != value;
}); //[1,2]
var positions = diff.map(function(value) {
  return b.indexOf(value);
}); // [0,1]




然后,对于每个值,您需要使用b

在数组.indexOf()中找到位置