我想过滤对象的属性而不改变对象。
let myObject = {
propA: [1,2,3],
propB: "foo"
}
现在我想做一些类似的事情:
myObject.propA.filter(el => el === 2)
但这只返回一个过滤后的数组,我必须写
myObject.propA = myObject.propA.filter(el => el === 2)
为了改变我的对象。
但是这根本不是我想要的!我想生成一个新的过滤对象而不改变旧的对象。 有人可以帮我吗?
最佳答案
您可以filter()
该数组,然后将其与原始对象合并以创建一个新对象,而无需改变原始对象。像这样的东西:
let myObject = {
propA: [1,2,3],
propB: "foo"
}
let propA = myObject.propA.filter(el => el === 2)
let newobj = {...myObject, propA}
// new Object
console.log("New:", newobj)
// old object unchanges
console.log("Old:", myObject)
关于javascript - 过滤对象的数组属性而不改变对象本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716356/