我有以下对象(失眠归来)
[
{
"field": 10.5,
"this_is_a_bool": 1,
"name": "",
"data": "2018-05-22T03:00:00.000Z",
"field2": null
},
{
"field": 5.3,
"this_is_a_bool": 0,
"name": "Slim Shady",
"data": "2020-01-22T04:45:00.000Z",
"field2": null
}
]
问题是我无法遍历那些“值集”,因此可以对其进行编辑。
要做这样的事情:
for (const val in myObj) {
if (val.field2 === null) {
val.field1 = 'flag - ' + val.field1
}
}
我尝试过的事情:
for (const val in myObj)
for (const val of myObj)
const [key,value] of Object.entries(myObj)
错误:有时会显示myObj is not iterable
,有时代码会被忽略。
答案 0 :(得分:2)
为什么不使用简单的.map()
:
const src = [{"field":10.5,"this_is_a_bool":1,"name":"","data":"2018-05-22T03:00:00.000Z","field2":null},{"field":5.3,"this_is_a_bool":0,"name":"Slim Shady","data":"2020-01-22T04:45:00.000Z","field2":null}],
result = src.map(({field, field2, ...rest}) => ({
field: field2 === null ? `flag-${field}` : field,
field2,
...rest
}))
console.log(result)
.as-console-wrapper{min-height:100%;}
答案 1 :(得分:0)
或...,如果您仍想使用for循环... (在您的示例val中是关键)
var myObj = [
{
"field": 10.5,
"this_is_a_bool": 1,
"name": "",
"data": "2018-05-22T03:00:00.000Z",
"field2": null
},
{
"field": 5.3,
"this_is_a_bool": 0,
"name": "Slim Shady",
"data": "2020-01-22T04:45:00.000Z",
"field2": null
}
];
for (const val in myObj) {
if (myObj[val].field2 === null){
myObj[val].field = 'flag - ' + myObj[val].field;
}
}
console.log(myObj);