首页 > 解决方案 > 如何推送到现有数组的对象

问题描述

我有一个数组,我正在循环遍历并根据条件为我的变量分配一个整数。然后我想将此变量推送到我现有的数组中。目前,推送时正在创建一个新索引。我希望将变量包含在数组的现有索引中。这是我的代码示例:

let data = [{
  "title": "Online",
  "state": "California"
}, {
  "title": "Retail",
  "state": "New York"
}, {
  "title": "Appointments",
  "state": "Florida"
}]

let varInt = 0;
let intArr = []
for (let i = 0; i < data.length; i++) {

  if (data[i].title && data[i].title.includes("Online")) {
    varInt = 1;
    intArr = {
      "varInt": varInt
    }
    data.push(intArr)

    console.log(data)

  }

}

我的预期结果是有一个看起来像这样的数组:

data = [{
  "title": "Online",
  "state": "California",
  "varInt": 1
}, {
  "title": "Retail",
  "state": "New York"
}, {
  "title": "Appointments",
  "state": "Florida"
}]

标签: javascriptarraysfor-loop

解决方案


如果您想修改数组中满足特定条件的项目,我建议您使用 map 函数:

let data = [{"title": "Online", "state": "California"}, {"title": "Retail", "state": "New York"}, {"title": "Appointments", "state": "Florida"}]

data = data.map(item=>{
  let meetsCondition = item.title && item.title.includes("Online")
  let varInt = 1
  if(!meetsCondition)
    return item
  else{
    item.varInt = varInt
    return item
  }
})

或者,如果您必须使用 for 循环:

for (let i = 0; i < data.length; i++) {

if(data[i].title && data[i].title.includes("Online")) {
 varInt = 1; 
 intArr = {"varInt": varInt}
 data[i].intArr = intArr
 
 console.log(data)
 
}

}

推荐阅读