javascript - 通过使用 javascript 比较另一个数组中是否存在 ID 来创建一个新数组

标签 javascript arrays object

我试图仅提取对象数组中的产品,其产品 ID 存在于 masterAccessories 列表数组中,该数组来自具有数组形式的 related_products 列表的特定产品。

JSON 示例:

{"product":
        {
            "id": 3,
            "product_name": "Product Name",
            "sku": "sku_ID",
            "description": "description",
            "product_link": "link",
            "cat_id": "cat-ID",
            "cat_name": "Cat Name",
            "related_products": [5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]
        }
    },
    {"product":
        {
            "id": 4,
            "product_name": "product_name",
            "sku": "sku_id",
            "description": "description",
            "product_link": "link",
            "cat_id": "cat-tc",
            "cat_name": "Cat Name",
            "related_products": []
        }
    },

我基本上试图找到相关产品数组中存在的 id 的所有产品。

相关产品数组:

[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]

到目前为止我的尝试没有成功:

myPromise.then(function (result) {
        let products = JSON.parse(result);
        return products;
    }, function (result) {
        console.error(result);
    }).then(function(products){
        let productArray = products[0].products;
        masterProduct += -1;
        let accesoriesList = Object.values(productArray)[masterProduct];
        let masterAccessories = accesoriesList.product.related_products;
        console.log('Master: ',masterAccessories);
        var newArray = [];
        for(let i=0;i<productArray.length;i++){
            if(masterAccessories.indexOf(productArray[i].product.id) === -1){
                newArray.push(productArray[i]);
            }
        }
        console.log('NewArray: ',newArray);
        return accesoriesList;
    })//just another then() that returns true

如果有帮助的话,这是从控制台的productArray变量返回的对象之一:

1:product:{id: 2, product_name: "Product Name", sku: "SkuID", description: "Description", product_link: "link", …} __proto__:Object

enter image description here

任何帮助将不胜感激,谢谢。

最佳答案

使用 jQuery:

    var products = json;//<your product json array deserialized>;

    var ids = [5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54];

    var productsContainedArray = $.grep(products, function (prod) {
        return ids.indexOf(prod.product.id) != -1;
    });

关于javascript - 通过使用 javascript 比较另一个数组中是否存在 ID 来创建一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46240984/

相关文章:

c++ - C++错误 “_main”,引用自:“Xcode

javascript - 如何根据传递给函数的参数更改变量名称?

javascript - JQuery 的 ajax 函数的包装器。回调已触发,但没有参数

JavaScript:向上/向下滚动时突出显示一行

javascript - 如何覆盖javascript中的eval函数?

javascript - 如何根据 JavaScript 对象的属性过滤它

c - 我需要帮助如何从较大的字符串中获取较小的字符串?在C中

javascript - 如何比较对象中的元素并返回较高的值? *Javascript*

javascript - 使用递归函数比较 JavaScript 中的对象

arrays - 获取更短版本的 for 循环?