如何使用jquery计算对象元素

时间:2017-07-28 19:13:00

标签: jquery

我有一个包含对象的数组。我计算对象值。 该脚本正在运行。是否可以缩短(DRY)?

var myData = [
    { sku: "9017WKs43dp", quan: 100, farbigkeit40: "A90ZUKOs4599", proof: "A90ZUKOs4499" },
    { sku: "9017WKs18dp", quan: 100 },
    { sku: "9017WAs18dp", quan: 50, eindruck: "A90ZUKOs4799" },
    { sku: "9017WAs18dp", quan: 40, eindruck: "A90ZUKOs4799", proof: "A90ZUKOs4499" },
    { sku: "9017WKs43dp", quan: 200, farbigkeit44:"A90ZUKOs4699", proof: "A90ZUKOs4499" },
    { sku: "9017WKs43dp", quan: 200, farbigkeit40:"A90ZUKOs4599" }
];

    function countElements() {
        var res = {};
        myData.forEach(function(value){

            res[value.sku]=res[value.sku]||{quan:0};
            res[value.sku].quan+=1*value.quan;

            if(value.farbigkeit40 != undefined) {
                res[value.farbigkeit40] = res[value.farbigkeit40] || {quan:0};
                res[value.farbigkeit40].quan +=1;   
            }
            if(value.farbigkeit44 != undefined) {
                res[value.farbigkeit44] = res[value.farbigkeit44] || {quan:0};
                res[value.farbigkeit44].quan +=1;   
            }
            if(value.proof != undefined) {
                res[value.proof] = res[value.proof] || {quan:0};
                res[value.proof].quan +=1;  
            }
            if(value.eindruck != undefined) {
                res[value.eindruck] = res[value.eindruck] || {quan:0};
                res[value.eindruck].quan +=1;   
            }
        });
        return res;
    }
    console.log(countElements());
    $('#result').html(JSON.stringify(countElements(),null,4));

内置第二个forEach。我试过这个但是我没有得到相同的结果。

["farbigkeit40","farbigkeit44","proof","eindruck"].forEach(function(p) {
            res[value.p]=res[value.p] || {quan:0};
            res[value.p].quan += 1;
            })

1 个答案:

答案 0 :(得分:0)

你快到了。您应该使用value.p而不是value[p]

object.propprop内引用名为object的属性。

object[prop]对该属性的引用,其名称为'值为' prop内的object

E.g。 p = 'farbigkeit44'value[p]value['farbigkeit44']相同,与value.farbigkeit44相同。