Javascript Rest操作符-动态删除元素以获得Rest
我想知道是否有一个选项可以达到如下效果Javascript Rest操作符-动态删除元素以获得Rest,javascript,Javascript,我想知道是否有一个选项可以达到如下效果 const x = { a:1, b:2, c:3, d:4, e:5 } const y = ['a', 'b']; 要仅获取c、d、e,我可以轻松使用rest运算符: const { a, b, ...rest} = x; 和rest包含3个键 下面的代码不起作用-但是有没有办法通过rest操作符来实现 const { ...y, ...rest} = x; 在rest中设置这3个键 所以如果i会定义 const y = [
const x = {
a:1,
b:2,
c:3,
d:4,
e:5
}
const y = ['a', 'b'];
要仅获取c、d、e
,我可以轻松使用rest运算符:
const { a, b, ...rest} = x;
和rest
包含3个键
下面的代码不起作用-但是有没有办法通过rest操作符来实现
const { ...y, ...rest} = x;
在rest
中设置这3个键
所以如果i
会定义
const y = ['a','b','c']
然后我会在
rest
?中有两个键,可能没有您想要的那么优雅,但是如果您想要动态获取不在数组中的键,您可以使用:
const x={
答:1,,
b:2,
c:3,
d:4,
e:5
}
常数y=['a','b','c'];
常量rest=Object.keys(x).filter(key=>y.indexOf(key)=-1);
控制台日志(rest)代码>使用,可以执行以下操作:
更新的答案
const x = {
a:1,
b:2,
c:3,
d:4,
e:5
}
const y = ['a', 'b', 'c'];
const rest = _.omit(x,y)
console.log(rest);
const x = {
a:1,
b:2,
c:3,
d:4,
e:5
}
const y = ['a', 'b', 'c'];
const rest = _.pick(x,_.difference(_.keys(x),y))
console.log(rest);
原始答案
const x = {
a:1,
b:2,
c:3,
d:4,
e:5
}
const y = ['a', 'b', 'c'];
const rest = _.omit(x,y)
console.log(rest);
const x = {
a:1,
b:2,
c:3,
d:4,
e:5
}
const y = ['a', 'b', 'c'];
const rest = _.pick(x,_.difference(_.keys(x),y))
console.log(rest);
代码说明:
。.keys(x)
返回['a','b','c','d','e']
- 差异(['a','b','c','d','e',['a','b','c'])
返回['d','e']
{d:4,e:5}
ES6矿粉镐的更换:
const x = {
a:1,
b:2,
c:3,
d:4,
e:5
}
const y = ['a', 'b', 'c'];
const out = Object.assign({}, ...y.map(key => ({ [key]: x[key] })))
当前ES6部分实施了
.omit
(为了更好地衡量,还实施了.pick
):
const data={a:1,b:2,c:3,d:4,e:5}
常量somekey=['a','b','c']
常量拾取=键=>o=>
减少(
(acc,key)=>Object.assign(acc,{[key]:o[key]}),
{}
)
console.log(
`选择[${someKeys}]:`,
拾取(某些关键点)(数据)
)
//->{a:1,b:2,c:3}
const omit=keys=>o=>
拾取(Object.keys(o).filter(k=>!(keys.includes(k)))(o)
console.log(
`省略[${someKeys}]:`,
省略(某些键)(数据)
)
//->{d:4,e:5}
const fromEntries=entries=>
减少(
(acc[k,v])=>Object.assign(acc,{[k]:v}),
{}
)
console.log(
“fromEntries:”,
fromEntries(Object.entries(数据))
)
//->{a:1,b:2,c:3,d:4,e:5}
您可以使用Object.keys()
手动迭代键。这里的目标是什么?这听起来像是一个.wouldn.wouldn't更容易使用u.omit here?out
在这里包含a、b、c键-而不是d键,这是一个提取第一个变量的解决方案(类似于开始时的rest排列)。Tex增加了捕获这两个案例的答案。