【问题标题】:Adding a property in a javascript object [closed]在javascript对象中添加属性[关闭]
【发布时间】:2022-07-21 17:06:28
【问题描述】:

我在 javascript 中有一个数据数组对象,看起来像这样,我们将其称为 array 1

id: 'abc-123-das-grt-123',
name: '2022/2023',
competition: {
  category: [Object],
},
stages: [ [Object] ],

我还有另一个名为array 2 的数组,我想用它来过滤掉array1 并添加一个新属性。 array2 的长度为 12,与 array1 的格式相同,array1 的长度为 120。我想编写一个函数,将 array1array2 循环。如果array1等于array2,则在array1中添加sports: 'badminton',并继续循环直到array2的所有元素都被array1循环了

我的功能是使用地图

const filteredResponse = array1.data.map(function(entry){
  if(array1.data === array2.data){
    entry.sports = "badminton"
  }
})

但结果显示未定义

[
  undefined, undefined, undefined, undefined,
  undefined, undefined, undefined, undefined,
]

代码有问题吗?有更好的方法吗?我试图避免使用 forLoops 并改用地图或其他方法。

【问题讨论】:

  • 你能分享一个array1array2 的例子吗 + 你提到了array1.data 但你提供了一个不包含属性array1data
  • 您每次通过循环都在比较相同的array1.data == array2.data,您没有对迭代的当前元素做任何事情。
  • “我有一个数据”:您能否提供完整的 JavaScript 语法示例输入数据,以及预期的相应输出?在您的代码中有一个 data 属性,在您分享的有关输入的小部分中不存在该属性。
  • 数组通常没有命名属性(除了像length这样的内置属性)。命名属性在对象中。你真正拥有什么?
  • @Panface,请编辑您的问题并通过提供完全有效的 JavaScript 语法的示例数据来消除所有歧义。

标签: javascript arrays dictionary for-loop


【解决方案1】:

我怀疑你想要的是这样的:

array1.forEach(e1 => {
    if (array2.some(e2 => e2.id == e1.id)) {
        e1.sports = 'badminton';
    }
})

内部函数只查找相同的id,但如果需要,您可以比较多个属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-21
    • 2014-08-26
    • 2016-12-30
    • 2017-07-17
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多