javascript - Javascript,更改对象值然后调用 Object.keys( ).forEach 中的函数
问题描述
然后每次用 if 语句检查第三个元素(红色标记),并根据下面的 if 语句更新它。在转换第三个元素后,我需要调用一个函数calculateNormalizedProduct
作为参数传递 updated Products[key]
,问题是当console.log
我仍然看到相同的值时..我写这个的方式有什么问题..?
var Products_Norm={}
Object.keys(Products).forEach(function (key) {
if (Products[key][2]==2){
Products[key][2]=2
}
else if (Products[key][2]==24) {
Products[key][2]=3
}
else if (Products[key][2]==720){
Products[key][2]=15
}
else {
Products[key][2]=0
}
console.log('before normalization and after convertion',Products[key],'Products[key][2]',Products[key][2])
Products_Norm[key]=calculateNormalizedProduct(Products[key],options)
console.log('after called normalization',Products_Norm[key])
})
一个例子是当输入(对象的数组)是
[30,9,24,0,9,9,price:339]
输出应该是
[30,9,3,0,9,9,price:339]
在更新的数组上调用函数calculateNormalizedProduct
。这应该沿着对象的所有数组完成,并将结果保存在Products_Norm
我将稍微改变输出的目标,将 Products 对象的值保存在一个新对象中
,
convertedProduct
以便我们
Products[key]
假设[30,9,24,0,9,9,price:339]
convertedProduct[key]=[30,9,3,0,9,9,price:339]
所以除了第三个元素之外几乎相同的对象。
解决方案
您可以使用for...in
来迭代对象,然后使用map
// iterate the object
for (let keys in arr) {
// cheekc if the value is an array
if (Array.isArray(arr[keys]) {
// use map to return new array of element
arr[keys] = arr.keys.map((item, index) => {
// if index === 2 mean third element
if (index === 2) {
// check if 2 then return 2
if (item === 2) {
return 2
} else if (item === 24) {
return 3;
} else if (item === 720) {
return 15
}
} else {
// index is other than 2 return original element
return item;
}
})
}
}
if (Products[key][2]==2){ Products[key][2]=2 } else if (Products[key][2]==24) { Products[key][2]=3 } else if (Products[key][2]==720){ Products[key][2]=15 }
推荐阅读
- spring-kafka - DeadLetterPublishingRecoverer 未在 .DLT 主题上发布“原始有效负载”
- java - java.util.LinkedHashMap 不能转换为 java.util.Collection
- javascript - TypeScript 我收到错误消息,显示 this.registerNumber 未定义
- java - 如何使用pdfbox在pdf最后一页的左下角应用数字签名图像?
- python - Python Pandas 为什么手动计算时百分比变化存在差异?
- java - 按下 javafx 按钮时不执行
- c - 我们可以在 C 的运行时找到结构中元素的数量吗?
- python - 机器学习的数据编码
- go - 将变量传递给回调函数
- reactjs - 使用流项目为 javascript 运行 react-codemod 时出错