我有这样的数据结构:
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/