案例
一组CheckBox,每次选中或者取消一个,在onChange中获取到的都是数组值,如何确定变化的那个值呢?体验地址
题目
如上案例,换一种说法。求解任意两个数组的存在差异的值。注意,有可能第一个数组比第二个数组的值多。也有可能第二个数组的值更多。
思路一
根据每个值在数组中首次出现和最后一次出现的索引值是否相等进行判断。
let arr0 = [1,2,4,5], arr1 = [1,2,3,4,5];
let diff = arr0.concat(arr1)
.filter((value, index, arr) => {
return arr.indexOf(value) === arr.lastIndexOf(value)
});
console.log(diff); // [3]
思路二
借助于lodash
的xor
方法
import _ from 'lodash';
let arr0 = [1,2,4,5], arr1 = [1,2,3,4,5];
let diff = _.xor(arr0, arr1);
console.log(diff); // [3]