我需要创建一个由来自两个单独数组的唯一元素组成的新数组。
我已将两个数组转换为一个数组,然后将其转换为一个对象以检查元素的频率。如果对象属性的值为 1(使其成为唯一属性),我想将其返回到数组(减去值)。有没有直接的方法来实现这一目标?
编辑:将结果移到 for 循环之外。预期输出应为 [4]
function diffArray(arr1, arr2) {
var finalArr = [];
var countObj = {};
var newArr = [...arr1, ...arr2];
for (var i = 0; i < newArr.length; i++) {
if (!countObj[newArr[i]]) countObj[newArr[i]] = 0;
++countObj[newArr[i]];
}
for (var key in countObj) {
if (countObj[key] === 1) {
finalArr.push(key);
}
} return finalArr;
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
函数式编程
相关分类