在javascript中按键比较对象属性
我试图通过键来比较对象属性。 以下是一些示例数据:在javascript中按键比较对象属性,javascript,arrays,typescript,javascript-objects,Javascript,Arrays,Typescript,Javascript Objects,我试图通过键来比较对象属性。 以下是一些示例数据: const data = [{ "name": "John", "value": "30" }, { "name": "Cindy", "value": "50" }, { "name": "Mathew", "value": "80" }, { "name": "Mike", "value": "35" }]; 所以我想比较John和Mike名字(key)的属性值(value)
const data = [{
"name": "John",
"value": "30"
}, {
"name": "Cindy",
"value": "50"
}, {
"name": "Mathew",
"value": "80"
}, {
"name": "Mike",
"value": "35"
}];
所以我想比较John和Mike名字(key)的属性值(value)。若Mike的值和John的值不同,则将Mike的值与John的值进行变异。
有一些算法
data.map(obj => {
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
let johnValue;
let mikeValue;
if(obj[key] == 'John') {
johnValue = Number(obj.value)
}
else if(obj[key] == 'Mike') {
mikeValue = Number(obj.value)
}
if(johnValue != mikeValue) {
newData = {
...data,
"Mike": johnValue
}
}
}
}
})
在其执行之后,我希望数据如下
const data = [{
"name": "John",
"value": "30"
}, {
"name": "Cindy",
"value": "50"
}, {
"name": "Mathew",
"value": "80"
}, {
"name": "Mike",
"value": "30"
}];
有没有一种方法可以使用ES6的一些功能编写得更好?
是的,你可以做得短一点
const MikeRecordInd = data.findIndex(v => v.name === 'Mike')
const JohnRecord = data.find(v => v.name === 'John')
if (data[MikeRecordInd].value !== JohnRecord.value) {
newData = [...data]
newData[MikeRecordInd] = { name: 'Mike', value: JohnRecord.value }
}
它有用吗?你得到了什么?请添加想要的结果。对于名称为Mike的对象,您的首选输出是什么??