如何将obj对象的key与obj2的key对比,相等将obj的值填写到obj2的standard的值里面,形成res
onst obj = {
"hz": "12",
"hw": {
"cm": "21",
"m": "11"
},
"fr": {
"cm_U": "12",
"m_S": "22"
}
}
const obj2 = {
hz: {
name: 'a',
data: [{
note: '',
avg: {
value: '',
unit: '%'
},
standard: {
value: '',
unit: '%'
}
}]
},
hw: {
name: 'b',
data: [{
note: 'cm',
avg: {
value: '',
unit: '%'
},
standard: {
value: '',
unit: '%'
}
},
{
note: 'm',
avg: {
value: '',
unit: '%'
},
standard: {
value: '',
unit: '%'
}
}
]
},
fr: {
name: 'c',
data: [{
note: 'cm_U',
avg: {
value: '',
unit: '%'
},
standard: {
value: '',
unit: '%'
}
},
{
note: 'm_S',
avg: {
value: '',
unit: '%'
},
standard: {
value: '',
unit: '%'
}
},
]
}
};
const res = {
hz: {
name: 'a',
data: [{
note: '',
avg: {
value: '',
unit: '%'
},
standard: {
value: '12',
unit: '%'
}
}]
},
hw: {
name: 'b',
data: [{
note: 'cm',
avg: {
value: '',
unit: '%'
},
standard: {
value: '21',
unit: '%'
}
},
{
note: 'm',
avg: {
value: '',
unit: '%'
},
standard: {
value: '11',
unit: '%'
}
}
]
},
fr: {
name: 'c',
data: [{
note: 'cm_U',
avg: {
value: '',
unit: '%'
},
standard: {
value: '12',
unit: '%'
}
},
{
note: 'm_S',
avg: {
value: '',
unit: '%'
},
standard: {
value: '22',
unit: '%'
}
},
]
}
};
用下面的代码处理obj2
//const obj =。。。。
//const obj2 =。。。。
for (let attr in obj) {
if (typeof (obj[attr]) == 'object') {
Object.keys(obj[attr]).forEach(key => {
let obj2item = obj2[attr].data.find(i => i.note == key);
if (obj2item) obj2item.standard.value = obj[attr][key];
})
}
else {
for (let item of obj2[attr].data) item.standard.value = obj[attr];
}
}
console.log(obj2);
const obj = {
name:'wyy',
age:22,
say:function(){
console.log(1111);
}
}
console.log(Object.keys(obj)); // ['name', 'age', 'say']
在ES5里,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError。