Javascript 分解深层属性
我最近开始使用ES6的赋值语法,并开始熟悉这个概念。我想知道是否可以使用相同的语法提取嵌套属性 例如,假设我有以下代码:Javascript 分解深层属性,javascript,ecmascript-6,Javascript,Ecmascript 6,我最近开始使用ES6的赋值语法,并开始熟悉这个概念。我想知道是否可以使用相同的语法提取嵌套属性 例如,假设我有以下代码: let cagingIt = { foo: { bar: 'Nick Cage' } }; 我知道我可以通过执行以下操作将extractfoo访问到变量中: // where foo = { bar: "Nick Cage" } let { foo } = cagingIt; 但是,是否可以提取深度嵌套的属性,如bar。也许是这样的: // where b
let cagingIt = {
foo: {
bar: 'Nick Cage'
}
};
我知道我可以通过执行以下操作将extractfoo
访问到变量中:
// where foo = { bar: "Nick Cage" }
let { foo } = cagingIt;
但是,是否可以提取深度嵌套的属性,如bar
。也许是这样的:
// where bar = "Nick Cage"
let { foo[bar] } = cagingIt;
我试着找到关于这件事的文件,但没有用。任何帮助都将不胜感激。谢谢大家! 有一种方法可以使用此语法处理嵌套对象和数组。鉴于上述问题,解决方案如下:
let cagingIt = {
foo: {
bar: 'Nick Cage'
}
};
let { foo: {bar: name} } = cagingIt;
console.log(name); // "Nick Cage"
在本例中,foo
指的是属性名“foo”。在冒号之后,我们使用bar
,它引用属性“bar”。最后,name
充当存储值的变量
对于阵列的分解,您可以这样处理:
let cagingIt = {
foo: {
bar: 'Nick Cage',
counts: [1, 2, 3]
}
};
let { foo: {counts: [ ct1, ct2, ct3 ]} } = cagingIt;
console.log(ct2); // prints 2
它遵循与对象相同的概念,只是您可以使用数组分解并存储这些值
希望这有帮助 如果已安装lodash,则可以使用以下选项之一:
let cagingIt = {
foo: {
bar: 'Nick Cage'
}
};
let { foo: {bar: name} } = cagingIt;
console.log(name); // "Nick Cage"
\获取
var object={'a':[{'b':{'c':3}]};
_.get(对象'a[0].b.c');
// => 3
或者如果您需要多个键
\uuu.at
var object={'a':[{'b':{'c':3},4]};
_.at(对象[a[0].b.c',a[1]']);
// => [3, 4]
您还可以安全地将\uuu.at()
与数组分解配对。方便json响应
[标题、艺术家、发行版、艺术品]=\uu.at(对象、[
'项目[0]。正在录制。标题',
'项目[0]。录制。艺术家[0]。名称',
'项目[0]。录制。发布[0]。标题',
'项目[0]。录制。发布[0]。艺术品[0]。url'
]);
Is{bar}=cagingIt.foo;不够?@RobFoley肯定是一个很好的解决方法,但更好奇的是语法是否支持对深度嵌套属性的分解。你肯定喜欢Nicholas Cage。同意@Dom。我希望有一个像foo一样存在于Mongo的解决方案。$。Bar为什么我总是忘记这一点,而不得不继续回到这篇文章:/Neat,我戳了一下Babel repl,但是没有尝试这种语法。类似的一个例子是,当你在深度解构的同时使用计算属性名时,会变得非常疯狂。另一种奇怪的方法是让{['foo']:{['bar']:name}}=cagingIt;认为破坏不是零安全的,因此使用这种方法是有风险的。