比较字符串数组和另一个字符串数组的优雅方法

Elegant method to compare an array of strings to another array of strings

本文关键字:字符串 数组 方法 另一个 比较      更新时间:2023-09-26

问题:如何将字符串数组与另一个字符串数组进行比较,从而返回一个不匹配的字符串数组

var master = ['1','2','3','4']
var versioned = ['1a','2','3b','4']
var errorLog = []
var count = 0;
//this for loop doesn't work :(
for(var i = 0; i < versioned.length - 1; ++i ){
    for(var j = 0; j < master.length -1; ++j){
        if(versioned[i] === master[j]){
            console.log('cleared');
        }
        if(count === master.length){
            errorLog.push(versioned[i]);
        }
    }
}

循环将返回[' 1 ',' 3 b '],

我觉得filter()map()reduce()会这样做,但我无法正确地将我的大脑围绕这个

var master = ['1','2','3','4'];
var versioned = ['1a','2','3b','4'];
function diff(needle, haystack){
  return needle.filter(function(item){
    return !~haystack.indexOf(item); 
  });
}
console.log(diff(versioned, master)); //["1a", "3b"];

~注意任何数等于-(x + 1),所以~-1变成0,这是唯一的假。

~master.indexOf(item)master.indexOf(item) !== -1相同