вы можете использовать var differences = ko.utils.compareArrays(arrList(), arrList2());
Это даст вам массив с элементами, которые выглядят следующим образом {status: "added", value: originalItem}
Состояние будет одним из этих трех значений added, deleted, retained
Естьпосмотрите на эту статью - Функции утилит в KnockoutJS
var data = [
{
id: 1,
name: "Test 1"
},
{
id: 2,
name: "Test 2"
},
{
id: 3,
name: "Test 3"
}
];
function ViewModel() {
var self = this;
self.list1 = ko.observableArray(data.slice(0));
self.list2 = ko.observableArray(data.slice(0));
var item = data[0];
self.list2.remove(item);
self.list2().push({
id: 5,
name: "Test 5"
});
self.listDiff = ko.pureComputed(function() {
return ko.utils.compareArrays(self.list1(), self.list2());
});
self.listReverseDiff = ko.pureComputed(function() {
return ko.utils.compareArrays(self.list2(), self.list1());
});
self.sameItems = ko.pureComputed(function() {
return self.list1().filter(function(item1) {
var arr = self.list2().filter(function(item2) {
return (
item1.name.toString().toLowerCase() ===
item2.name.toString().toLowerCase()
);
});
return arr.length > 0;
});
});
}
var vm = new ViewModel();
ko.applyBindings(vm);
List 1
Список 2
Элементы в списке 1, которые существуют в списке 2
Список 1
-
Список 2
-
Список1 против списков2 различия
Список 2 и различия Списка 1