我有一个对象
> state
{ homeStreet1: 'a', homeStreet2: 'b', homeStreet3: 'c', State: 'MA' }
> Object.entries(state)
[
[ 'homeStreet1', 'a' ],
[ 'homeStreet2', 'b' ],
[ 'homeStreet3', 'c' ],
[ 'State', 'MA' ]
]
如何从该对象创建一个新对象以过滤出属性?
我能做
> Object.entries(state).filter(([key,value]) => { return key !== 'homeStreet3' })
这给了我
> [ [ 'homeStreet1', 'a' ], [ 'homeStreet2', 'b' ], [ 'State', 'MA' ] ]
作为具有所需值的新数组,但如何将其作为对象?
答案 0 :(得分:3)
您可以通过两种方式选择最适合自己的方式
const arr = [
["homeStreet1", "a"],
["homeStreet2", "b"],
["State", "MA"],
]
const res1 = Object.fromEntries(arr)
const res2 = arr.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})
console.log(res1)
console.log(res2)
答案 1 :(得分:2)
最短的方法是针对不需要的属性homeStreet3
进行破坏,并得到其余的结果。
const
state = { homeStreet1: 'a', homeStreet2: 'b', homeStreet3: 'c', State: 'MA' },
{ homeStreet3, ...result } = state;
console.log(result);
答案 2 :(得分:0)
扩展此答案:
const arr = [
["homeStreet1", "a"],
["homeStreet2", "b"],
["State", "MA"],
]
const res1 = Object.fromEntries(arr)
const res2 = arr.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})
console.log(res1)
console.log(res2)
const filteredEntries = Object.entries(state).filter(([key]) => key !== 'homeStreet3')
// This
const newState = filteredEntries.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})
// Or this
const newState = Object.fromEntries(filteredEntries);