首页 > 解决方案 > 无法遍历 Javascript 对象

问题描述

我有以下对象(从失眠返回)

[
  {
    "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,有时代码会被忽略。

标签: javascriptloopsobject

解决方案


你为什么不使用简单.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%;}


推荐阅读