JSON添加唯一键值

时间:2017-01-22 22:55:05

标签: javascript jquery html css json

我正在尝试为我想要的输出中的小提琴添加唯一值

  { category: 'fos', value: 70 },
    { category: 'nyedva', value: 30 }

我能够获得数组中的唯一值,不知道在哪里添加值

http://jsfiddle.net/mj3q0sk3/

var catalog={
    products : [
        { category: 'fos', value: 10 },
        { category: 'fos', value: 20 },
        { category: 'nyedva', value: 30 },
        { category: 'fos', value: 40 },
    ]
};
var categories = [];
var sum=[];

$.each(catalog.products, function(index, value) {
    if ($.inArray(value.category, categories)==-1) {
        categories.push(value.category);
    }
    else {
            console.log("CAt Val:" +value.category);
            var total=value.value;
        sum.push(total);
    }

});

console.log(categories);
console.log(sum);

2 个答案:

答案 0 :(得分:0)

您可以使用forEach()循环返回所需的结果。



var catalog = {"products":[{"category":"fos","value":10},{"category":"fos","value":20},{"category":"nyedva","value":30},{"category":"fos","value":40}]}

var result = [];
catalog.products.forEach(function(e) {
  var c = e.category;
  !this[c] ? (this[c] = e, result.push(this[c])) : this[c].value += e.value
}, {})

console.log(result)




答案 1 :(得分:0)

您可以在不需要jQuery的情况下执行此操作:

var res = catalog.products.reduce(function(res, product) {
  if (!res.hasOwnProperty(product.category)) {
    res[product.category] = 0;
  }
  res[product.category] += product.value;
  return res;
}, {});

console.log(res);

这会产生:

{ fos: 70, nyedva: 30 }

如果你想把它作为一个类别数组:

console.log(Object.keys(res).map(function(key) { return { category: key, value: res[key] }; }));

这会给你:

[ { category: 'fos', value: 70 },
  { category: 'nyedva', value: 30 } ]