如何比较jquery中的两个数组,然后从第一个数组中删除两个数组中都不匹配的项?
我从这个开始
var listOne = [1,2,3,4,6,7];
var listTwo = [2,5,6];
我希望结果像这样,仅listOne被更改。
var listOne = [2,6];
var listTwo = [2,5,6];
对于中等大小的阵列,蛮力解决方案应该可以正常工作。您所描述的内容似乎基本上可以归结为从一个数组中删除另一个数组中不存在的元素。因此,遍历第一个数组并删除在第二个数组中找不到的所有元素:
function removeElems(src, permitted) {
// traverse array backwards so iteration not affected when we remove current item
for (var i = src.length - 1; i >= 0; i--) {
// if src element not found in permitted array, remove it from src
if (permitted.indexOf(src[i]) === -1) {
src.splice(i, 1);
}
}
}
var listOne = [1,2,3,4,6,7];
var listTwo = [2,5,6];
removeElems(listOne, listTwo);
工作演示:http : //jsfiddle.net/jfriend00/1n1fbpgm/
如果listTwo
可能很长,我可能会首先将该数组的所有元素放入一个临时对象中,因此检查数组中的项是否只是对象键查找,而不是线性数组搜索,但适用于中小型在性能不是超级批评的阵列或情况下,可能并不需要额外的复杂性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句