比较数组中的对象并删除重复项和更新-Javascript

用户1435281

我有一个对象数组,表示如下:

0: Object
ConsolidatedItem_catalogId: "080808"
ConsolidatedItem_catalogItem: "undefined"
ConsolidatedItem_cost: "0"
ConsolidatedItem_description: "Test Catalog Item"
ConsolidatedItem_imageFile: "27617647008728.jpg"
ConsolidatedItem_itemNumber: "1234"
ConsolidatedItem_quantity: "1"
ConsolidatedItem_source: "CAT"
ConsolidatedItem_status: "02"
ConsolidatedItem_umCode: "EA"

1: Object
ConsolidatedItem_catalogId: ""
ConsolidatedItem_catalogItem: "undefined"
ConsolidatedItem_cost: "0"
ConsolidatedItem_description: "ALARM,SHUTDOWN SYSTEM,AXIOM,XP3, 0-1500 PSIG, HIGH AND LOW PRES Testing"
ConsolidatedItem_imageFile: ""
ConsolidatedItem_itemNumber: "10008"
ConsolidatedItem_quantity: "1"
ConsolidatedItem_source: "INV"
ConsolidatedItem_status: "02"
ConsolidatedItem_umCode: "EA"

我正在尝试更新和删除对象(如果再次添加)或更新对象。最好用新值更新对象。我的代码如下:

var result = $.grep(finalObject, function(e) {
            return e.ConsolidatedItem_itemNumber == o.ConsolidatedItem_itemNumber;
        });
        console.log(result);
        if (result.length == 0) {
            finalObject.push(o);
            shoppingCounter = finalObject.length;
            $('#numberShoppedItems').text(shoppingCounter);
            console.log(finalObject);
        } else if (result.length == 1) {    
            finalObject.filter(function(x){
                result = x;
                console.log(result);
                return x == result.ConsolidatedItem_itemNumber;

            }); 
        } else {
            alert('Multiples Found');
        } 
    }

我尝试了多种获取确切对象和操作数据的方法,但是它们都失败了。我更喜欢更新对象,例如是否CatalogItem_itemNumber持有相同的值,如果CatalogItem_quantity不同,将这些CatalogItem_quantity值加在一起并更新对象数组。

我不需要确切的答案,但是朝正确的方向轻推会带来奇迹。在过去的几个小时中,我研究了几个相关的问题,但似乎都没有解决这个问题。如果您知道有答案的问题,请随时将其链接。我可能已经错过了。

请没有Underscore.js

用户1435281

解决方法如下:

1.)验证对象是否为空。

2.).some()在对象上使用以迭代它。

3.)检查finalObject现在的e,是否与我组装的临时对象中的钥匙相匹配o

4.)更新需要更新的值并返回true;

注意:最初,我打算通过其索引删除该对象,然后将其替换为新对象。这也可以通过使用.splice()并获取您所在数组中当前对象的索引来工作

这是更新版本:

if (o.ConsolidatedItem_quantity != '') {

    var result = $.grep(finalObject, function(e) {
        return e.ConsolidatedItem_itemNumber == o.ConsolidatedItem_itemNumber;
    });
    if (result.length == 0) {...}
    else {
        finalObject.some(function (e) {
            if(e.ConsolidatedItem_itemNumber == o.ConsolidatedItem_itemNumber){
                var a;
                a = +e.ConsolidatedItem_quantity + +o.ConsolidatedItem_quantity;
                e.ConsolidatedItem_quantity = a.toString();
                document.getElementById(o.ConsolidatedItem_itemNumber).value=a;
                return true;
            };
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除和计算对象数组中的重复项?- Javascript

javascript从对象数组中删除重复项

删除对象数组Javascript中的重复项

Javascript从对象数组中删除重复项

比较 2 个对象数组并删除重复项 javascript

如何比较对象的两个数组并删除JavaScript中的重复项

JavaScript - 对象数组 - 比较和删除重复 ES6

从JavaScript中的对象数组中删除重复项

从 Javascript / Typescript 中的数组中删除子对象重复项

如何在JavaScript中查找(和删除重复项)对象数组的组合?

基于 JavaScript 对象数组中的布尔属性删除重复项和过滤

基于键从 JavaScript 对象数组中删除重复项

Javascript:使用单个属性删除对象数组中的重复项

使用javascript删除与对象的另一个键和值对对应的对象数组中的重复项

JavaScript:删除数组中的重复项

比较两个Javascript数组并删除重复项

在javascript中删除和更新对象数组中的重叠索引

如何首先结合对象的属性,然后使用Javascript删除对象数组中的重复项

根据对象属性值从 javascript 对象数组中删除重复项

从 JavaScript 中的对象数组中删除第一个重复项

从对象数组中删除重复项,并在JavaScript中添加新值(例如,数量)

根据 JavaScript 中的属性值从对象数组中删除重复项

Javascript es6-如何删除对象数组中的重复项(最后一个重复项除外)?

从对象数组中,收集并删除 JavaScript 中所有属性的重复项

使用Javascript从两个对象数组中删除重复项

比较和删除JavaScript数组中的值

如何从对象数组中删除重复值并使用 JavaScript 更新对象属性

如何在 JavaScript 中的对象数组中查找重复项?

如何使用javascript从对象中删除重复项