我们假设我有两个列表。一个存在一些名称和一个新名称,可能有一些新名称,删除名称或仍然相同的名称。
var currentList = ['Daniel', 'Lara', 'Horst'];
var newList = ['Mario', 'Lara'];
// Expected result
toDelete = ['Daniel', 'Horst'];
toAdd = ['Mario'];
最后我需要两个包含新名称和可删除名称的数组。两个数组中出现的名称都可以忽略。
我真的不知道该怎么称呼这种"排序",所以即使是流行语也可以提供帮助。请注意,我根本没有jQuery。
提前致谢。
答案 0 :(得分:2)
这很简单,你可以用2个循环来做到这一点:
var currentList = ['Daniel', 'Lara', 'Horst'];
var newList = ['Mario', 'Lara'];
var toDelete = [];
var toAdd = [];
for(var i=0;i<newList.length;i++){
if(currentList.indexOf(newList[i]) >-1)
toAdd.push(newList[i])
}
for(var i=0;i<currentList.length;i++){
if(newList.indexOf(currentList[i]) == -1)
toDelete.push(currentList[i]);
}
console.log('dele',toDelete);
console.log('add',toAdd);
答案 1 :(得分:-1)
首先创建第三个数组,它是当前列表和新列表的交集。 其次,从每个数组中删除此数组。
伪代码:
var intersection_list = intersection(currentList, newList)
var toDelete = currentList - intersectionList;
var toAdd = newList - intersectionList;
您可以将上述库用于_.intersection()和_.difference()