如何解决在对象中查找要编辑或添加
[{provisioned=2.0,product=str1,totalID=1.0},{product=str2,provisioned=4.0,totalID=3.0},{provisioned=6.0,product=str3,totalID=5.0}]
[str1,str2,str3,str4]
然后我循环一个数据集以获取 totalID 计数,将其添加到产品的 totalID 中,但如果它不存在,则将其推送到对象。
var countID = 0;
uniqueProduct.forEach(
currentproduct => {
countID = 0;
for (var i = 0; i < shtRng.length; ++i) {
if (shtRng[i][ProductCol].toString() == currentproduct) { // && shtRng[i][IDcol].toString().length>4){
countID++;
}
}
if (countID == 0) {
return;
}
console.log(currentproduct + ": " + countID);
}
)
这非常适合返回 uniqueProduct
中每个产品的 countID
我不想记录结果,而是像这样将其添加到对象中...如果当前唯一产品不在 productCounts
对象中,请添加它。
let obj = productCounts.find((o,i) => {
if (o.product == currentproduct) {
productCounts[i] = { product: currentproduct,totalID: productCounts[i].totalID+countID,provisioned: productCounts[i].provisioned };
return true;
} else {
productCounts.push({ product: currentproduct,totalID: countID,provisioned: 0 });
return true;
}
});
在我看来,这应该可行,但它似乎跳过了一些记录或多次添加产品。如何正确添加到对象?
[{provisioned=2.0,totalID=35.0},{product=str2,provisioned=4.0,totalID=8.0}, {provisioned=6.0,totalID=51.0},product=str4,totalID=14.0}]
解决方法
//results
},process13x21: {
'-i': 'D:\\Code\\UnitTest\\ConsoleApp\\1\\13x23.png','-tr': 16,'-tc': 16,'-ofr': 16,'-ofc': 16,'-outfile': '"D:\\Code\\UnitTest\\ConsoleApp\\Process\\1"'
},process13x22: {
'-i': 'D:\\Code\\UnitTest\\ConsoleApp\\1\\13x23.png',process13x23: {
'-i': 'D:\\Code\\UnitTest\\ConsoleApp\\1\\13x23.png','-outfile': '"D:\\Code\\UnitTest\\ConsoleApp\\Process\\1"'
}
}
// ADDED CODE
// loop through each data we want to add and add a property.
` consoleOutputParamsOBJ.forEach((obj) => {
var processname = dynamicTaskNameBaseOBJ + obj.name;
console.log(processname);
//taskparamscompiled.processname['-i'] = obj.filepath;
taskparamscompiled[processname]['-i'] = obj.filepath;
// console.log(dynamicTaskNameBaseOBJ + obj.name);
});
console.log(taskparamscompiled);`
的参数是一个函数,当元素符合条件时返回一个布尔值。 find()
语句应该使用 this 的结果,而不应该在条件函数中。
if
顺便说一句,如果您使用键是产品名称的对象而不是对象数组,您的生活会更轻松。您可以轻松地将对象数组变成这样的对象:
let obj = productCounts.find(o => o.product == currentProduct);
if (obj) {
obj.totalId += countID;
} else {
productCounts.push(productCounts.push({ product: currentproduct,totalID: countID,provisioned: 0 });
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。