【问题标题】:how can I use Array.find() function to edit name and age properties inside specific object如何使用 Array.find() 函数编辑特定对象内的名称和年龄属性
【发布时间】:2021-12-17 04:26:41
【问题描述】:

我可以使用 find 来编辑本例中的一个属性。但我没有找到编辑多个属性的语法。

const arr = [
  {
    id: 101,
    name: “Jone”,
    age: 1
  },
  {
    id: 102,
    name: “Jane”,
    age: 2
  },
  {
    id: 103,
    name: “johnny”,
    age: 3
  }
];
console.log(arr);
arr.find(element => element.id == 101).name = “jimmy”
console.log(arr);

【问题讨论】:

  • 只需将find 的结果赋值给一个var,然后你就可以改变你想要的所有属性。
  • 你的代码不能通过你使用非法字符的解释器(引号“ ... ”

标签: javascript arrays object ecmascript-6 javascript-objects


【解决方案1】:

您可以存储find 返回的对象并根据需要对其进行编辑。

const arr = [
  {
    id: 101,
    name: 'Jone',
    age: 1
  },
  {
    id: 102,
    name: 'Jane',
    age: 2
  },
  {
    id: 103,
    name: 'johnny',
    age: 3
  }
];
console.log(arr);

// ****
const found = arr.find(element => element.id == 101)
found.name = 'jimmy'
found.age = 54
// ****

console.log(arr);

【讨论】:

  • 这样,id = 101 的对象的名称仍然是 jimmy,通过将值分配给您退出数组的变量,编辑将应用于变量而不是数组。
  • 这不是真的。对象通过引用传递(大部分时间)。我强烈建议您查看解释它的堆栈溢出中的this answer,并且您对该主题进行更多研究:)
  • 我从问题中复制粘贴。 Here你可以试试,同时我会编辑答案
  • @ppicom 你是对的,我首先想到它并在在线解释器上执行它,但它没有工作我认为问题出在那个解释器上,因为我在我的本地解释器上尝试了你的代码并且有用。我试图用一行代码找到解决方案,但似乎无法完成。谢谢
【解决方案2】:

例如,使用Object.assign

const arr = [
  {
    id: 101,
    name: 'Jone',
    age: 1
  },
  {
    id: 102,
    name: 'Jane',
    age: 2
  },
  {
    id: 103,
    name: 'johnny',
    age: 3
  }
];

Object.assign(arr.find(el => el.id === 101), {
  name: "Jimmy",
  age: 5,
});

console.log(arr);

【讨论】:

  • 我试图用一行代码找到解决方案,但似乎无法完成。谢谢
  • 我认为这是一行代码:D,你也应该在问题中提及它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多