比较两个数组,找出丢失/错误的项目

问题描述 投票:0回答:3

我对Js数组没什么问题。我有两个数组-一个始终是正确的(使用正确的数据创建),另一个基本上是从获取中获取的。我正在尝试比较这两个数组,我能够获得它们的匹配项,但不能得到不匹配的项:

    var results = [];
    var controlArray = ['T', 'M', 'P', 'N']
    var fetchArray = ['T', 'M', 'PP', 'N ']

    for (var i = 0; i < controlArray.length; i++) {
        for (var j = 0; j < fetchArray.length; j++) {
            if (controlArray[i] === fetchArray[j]) {
                results.push(fetchArray[i]);
            }
        }         
    }

输出应该像:

    results = ['PP', 'N '];

或:

    results = ['P', 'N'];

因此它将指示问题出在哪里。这两项工作都很重要。

这给了我匹配的部分。我试图只放!==,但是在那种情况下,它基本上将所有内容扔掉了,我看不出逻辑为什么它不应该那样工作。空格也很重要。

有什么想法可以从这些数组中轻松获取不匹配的值?

javascript
3个回答
0
投票

您应遍历数组并使用包含进行过滤。例如:

const results = fetchArray.filter(el => !controlArray.includes(el));
// results: ['PP', 'N ']

希望有帮助。.>


0
投票
fetchArray.forEach(function(it){
    controlArray.indexOf(it)==-1&&results.push(it)
})

0
投票

您可以只使用filterfind匹配和不匹配的元素。

© www.soinside.com 2019 - 2024. All rights reserved.