我有一个名为obj的对象的javascript数组和另一个名为finalObj的对象
const obj = [{ 'name': 'skip', low: 20, high: 10 },
{ 'name': 'jump', low: 5, high: 20},
{ 'name': 'tall', low: 3, high: 2},
{ 'name': 'wind', low: 5, high: 10},
{ 'name': 'hire', low: 7, high: 6 }]
const finalObj = {
'Shopping mall': {
'names': ['skip', 'jump'],
'low': 0,
'high': 0
},
'Parking garage': {
'names': ['hire'],
'low': 0,
'high': 0
},
'Falling Tower': {
'names': ['tall', 'wind'],
'low': 0,
'high': 0
}
}
现在,如果具有项目名称的对象的obj数组与名称的finalObj匹配,则将低值和高值添加到finalObj中。
最后的输出应该是这样的:
const finalObj = {
'Shopping mall': {
'names': ['skip', 'jump'],
'low': 25,
'high': 30
},
'Parking garage': {
'names': ['hire'],
'low': 7,
'high': 6
},
'Falling Tower': {
'names': ['tall', 'wind'],
'low': 8,
'high': 12
}
}
我试着迭代对象,但到目前为止没有运气。
for (const o in obj) {
for (const f in Object.entries(finalObj)) {
if (f[1]['names'].indexOf(obj[o].name >= 0)) {
console.log("matched name : " + obj[o].name)
}
}
}
4条答案
按热度按时间s4n0splo1#
使用
obj.forEach()
循环数组,然后使用Object.values(finalObj).forEach()
循环finalObj
中的值。然后使用
includes()
测试obj
中的name
是否在names
中,并将其添加到low
和high
属性中。djp7away2#
Object.entries(finalObj)返回一个键值对数组,所以当你使用for...in循环时,f将是一个数组而不是一个对象。你应该使用for...of来直接循环值。
indexOf检查不太正确,需要检查索引是否大于或等于0(不是属性名本身的值)。
py49o6xq3#
嘿你可以用这个
名称取自数组,我循环遍历它们以找到它们的值,并将它们添加到末尾的值中,我更新finalObj
qco9c6ql4#
可以使用
for ... of
迭代数组。