如果笔记本电脑型号和序列号相同,我必须添加新字段totalModel并增加计数。例如,在下面的情况下:serialid“1”和笔记本电脑型号“xyz”出现两次,所以我想将“totalModel”计数添加为2,依此类推。我怎样才能在 jquery 中实现这一点
最佳答案
这个问题实际上并不是关于 jQuery,而是关于映射和过滤数组和对象。不过,我们可以使用一些 jQuery 便捷方法来解决这个问题。
解决这些问题的很大一部分是通过正确定义您想要做什么。从您的问题来看,您希望获得每个笔记本电脑型号类型的唯一序列 ID 的映射。我们可以使用 JavaScript 的 Array.prototype.reduce 来生成这样的映射(请注意,我们将为遇到的每个笔记本电脑型号的第一个获取“已售出”值):
var laptop_models = data.reduce(function (memo, obj) {
if (!memo[obj.laptopModel]) {
memo[obj.laptopModel] = {
unique_serial_ids: [],
sold: obj.sold
};
}
if ($.inArray(obj.serialid, memo[obj.laptopModel].unique_serial_ids) === -1) {
memo[obj.laptopModel].unique_serial_ids.push(obj.serialid);
}
return memo;
}, {});
接下来,我们可以将 laptop_models
对象映射到您指定为预期结果的数组中:
var result = $.map(laptop_models, function (laptop_model, model_name) {
return {
laptopModel: model_name,
totalModel: laptop_model.unique_serial_ids.length,
sold: laptop_model.sold
};
});
关于javascript - 如何增加jquery json中的自定义计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31622369/