【问题标题】:Find matches between two arrays [duplicate]查找两个数组之间的匹配项[重复]
【发布时间】:2021-05-25 17:57:45
【问题描述】:

似乎无法正常工作。我有两个数组,我想在数组 1 和 2 之间找到匹配项。array2 匹配的结果应该存储在数组变量tobechanged 中。 我可以在array1array3 之间找到匹配项,但似乎无法以正确的方式获得array2 的ID。

var array1 = ["279482", "100"];
var array2 = [{id: "279482", stock: "9"},{id: "213", stock: "2"}];
var array3 = ["279482", "213"];
var tobechanged = [];

// Loop for array1
    for(let i = 0; i < array1.length; i++) {

        // Loop for array2 
        for(let j = 0; j < array2.length; j++) {
              
            // Compare the element of each and
            // every element from both of the
            // arrays
            if(array1[i] === array2[j].id) { //how to compare id of array2?
                console.log("match");
                // Return if common element found
                //console.log([{id: array2[j].id, stock: array2[j].stock}); //how to get the result in a proper array?
            }
        }
    }

【问题讨论】:

  • 请更具体地说明您的问题 - 您的代码未使用 tobechanged - 这就是您要问的问题吗?你只是想做tobechanged.push(arrajy2[j]) 吗?

标签: javascript arrays


【解决方案1】:

您可以通过使用includes 查看另一个对象来过滤该对象。

const
    array1 = ["279482", "100"],
    array2 = [{ id: "279482", stock: "9" }, { id: "213", stock: "2" }],
    tobechanged = array2.filter(o => array1.includes(o.id));

console.log(tobechanged);

【讨论】:

  • 哇,谢谢这解决了这个问题!比我的方法容易得多:)
【解决方案2】:

您可以在循环中添加一个 push() 方法,

var array1 = ["279482", "100"];
var array2 = [{id: "279482", stock: "9"},{id: "213", stock: "2"}];
var tobechanged = [];

for(let i = 0; i < array1.length; i++) {
        for(let j = 0; j < array2.length; j++) {
            if(array1[i] === array2[j].id) { 
                console.log("match");
                tobechanged.push(array2[j].id); //or tobechanged.push(array1[i]);
            }
        }
    }
console.log(tobechanged);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多