基于 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
中找到位置
我已经尝试了多种方法来解决这个问题,任何提醒都会有很大帮助。
我在我的项目中使用 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
中找到位置