无法遍历Javascript对象

时间:2020-07-06 13:22:04

标签: javascript loops object

我有以下对象(失眠归来)

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

2 个答案:

答案 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);

相关问题