javascript - 过滤对象的数组属性而不改变对象本身

标签 javascript functional-programming

我想过滤对象的属性而不改变对象。

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/

相关文章:

javascript - Javascript 无法将 HSV 转换为 RGB

javascript - 将 javascript 代码应用于两个不同的 php 页面

haskell - 使数据类型成为 Functor 的实例以映射到参数类型的字段

list - Scala 迭代列表

c++ - 通过作为类的公共(public)成员的两个函数传递一个函数作为参数

javascript - 在javascript中转换每个数组值ias对象不起作用

javascript - 一个轻松创建 html 日历表的插件

functional-programming - 如何从SML中的文件中读取?

scala - 如何使用功能状态生成随机数?

javascript - Excel VBA - 更改 Javascript 函数的值(无参数)