javascript - 映射数组中对象中的数组

标签 javascript arrays mapping javascript-objects

我有这样的数据结构:

let foo = [{ "a": [1,2,3] }]

我想映射对象内部的数组,在这个数组内部

// Approach 1:
foo.map(foo => foo.a.map(val => val + 1))

这将返回 [ [ 2,3,4 ] ] 但会删除外部对象(我认为这很有趣)。

// Approach 2:
foo.map(foo => {
    foo.a = foo.a.map(val => val + 1)
    return foo
})

这有效,但也改变了对象本身。

有没有办法做到这一点,返回正确的值,但不改变作为参数给出的对象?

编辑:

我的用例包括在此数组中有多个对象:

let bar = [
    { "a": [1,2,3] },
    { "a": [5,5,5] },
    { "a": [10,100,1000] },
]

所以直接在内部寻址数组并没有真正的帮助。

最佳答案

您可以使用 Object.assign() 返回原始对象的副本并添加修改后的 a 数组。

let bar = [
  { "a": [1,2,3]},
  { "a": [5,5,5] },
  { "a": [10,100,1000] },
]

let result = bar.map(function(e) {
  return Object.assign({}, e, {a: e.a.map(a => a + 1)})
})

console.log(bar)
console.log(result)

关于javascript - 映射数组中对象中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015158/

相关文章:

javascript - 正则表达式:找出符号是否被相等的符号包围

javascript - 如何打印这个 JavaScript 数据结构?

javascript - 根据提示进行数组存储

c++ - 找出 QGraphicsItem 的哪一部分在 QGraphicsView 中可见

javascript - React 中上下文发生变化时获取数据

javascript - 单击弹出窗口时如何使弹出窗口消失?

hibernate - 如何使用 Hibernate 映射 LinkedHashMap?

Vim:如何确定键映射设置的位置/时间?

javascript - 使用 Javascript 翻译日期?

java - Android:使用数组项填充 ListView