JavaScript - 更改对象字面量的值

时间:2021-02-24 05:43:07

标签: javascript

伙计们!

基本上我想用 arr1 中的每个元素替换 arr2 中所有对象的对象文字“标题”值。

const arr1 = ['first', 'second', 'third']

const arr2 = [
  {
    id: 1,
    title: 'hello'
  },
  {
    id: 2,
    title: 'world'
  },
  {
    id: 3,
    title: ' ?'
  }
]

最终结果如下:

const final = [
  {
    id: 1,
    title: 'first'
  },
  {
    id: 2,
    title: 'second'
  },
  {
    id: 3,
    title: 'third'
  }
]

我真的不明白我怎么能做这样的事情,我完全被困在这个阶段。

祝您有美好的一天!

3 个答案:

答案 0 :(得分:1)

您可以克隆原始对象(以避免突变),然后使用 for 循环进行迭代以替换数组中的每个对象:

const arr1 = ['first', 'second', 'third']

const arr2 = [
  {
    id: 1,
    title: 'hello'
  },
  {
    id: 2,
    title: 'world'
  },
  {
    id: 3,
    title: ' ?'
  }
]

let result = JSON.parse(JSON.stringify(arr2));

for(let i = 0; i < arr2.length; i++){
  result[i].title = arr1[i]
}

console.log(result)

答案 1 :(得分:0)

你可以这样做:

arr2.forEach((x,i)=>{x.title=arr1[i]})

x : 是元素

i : 是索引

示例:

var arr1 = ['first', 'second', 'third']

var arr2 = [
  {
    id: 1,
    title: 'hello'
  },
  {
    id: 2,
    title: 'world'
  },
  {
    id: 3,
    title: ' ?'
  }
]

arr2.forEach((x,i)=>{x.title=arr1[i]})

console.log(arr2)

如果您不想修改现有对象,可以使用 map 方法

arr2.map((x,i)=>{
    return {id:x.id,title:arr1[i]}
})

示例:

var arr1 = ['first', 'second', 'third']

var arr2 = [
  {
    id: 1,
    title: 'hello'
  },
  {
    id: 2,
    title: 'world'
  },
  {
    id: 3,
    title: ' ?'
  }
]

var result = arr2.map((x,i)=>{
    return {id:x.id,title:arr1[i]}
})

console.log(result)

答案 2 :(得分:0)

arr2.map((v, k) =>{
  v.title = arr1[k]
});

您使用 arr1 中位于同一索引的字符串设置每个项目的标题。