基于 javascript 中位置的数组差异

array difference based on positions in javascript

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

好像是.difference()returns设置的不同,但是这里索引很重要:

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]

然后,对于这些值中的每一个,您需要使用 .indexOf()

在数组 b 中找到位置