复杂解构:对象位于数组的第一个索引内,该索引位于另一个对象内
Complex Destructuring: Object inside first index of Array that is inside another Object
考虑这个 'complex' 对象:
const obj = {
nestedArray: [
{ stuff: "things" }
],
nestedObj: {
key1: "value1",
key2: "value2"
}
}
我正在寻找一种优雅的单行解决方案来从 obj
.
解构 key1
、key2
和 stuff
我当前的解决方案如下所示并且工作正常:
const { nestedArray, nestedObj: { key1, key2 } } = obj
const { stuff } = nestedArray[0]
但我宁愿像这样在一行中完成:
const { array[0]: { stuff }, nestedObject: { key1, key2 } } = obj
但显然那是行不通的。有什么办法可以像我想要的那样在一行中做到这一点?还是我对 ES6 的要求太多了?我很乐意接受“否”的答案,只要它能很好地解释为什么不。
你非常接近,只需使用数组解构和对象解构即可得到 stuff
:
const obj = {
nestedArray: [
{ stuff: "things" }
],
nestedObj: {
key1: "value1",
key2: "value2"
}
}
const { nestedArray: [{ stuff }], nestedObj: { key1, key2 } } = obj
console.log({ stuff, key1, key2 })
虽然它是 可能 ,但是通过将 stuff
列为它在嵌套数组中的位置,非常类似于您声明一个包含 [= 对象的数组11=] 属性:
const obj = {
nestedArray: [
{ stuff: "things" }
],
nestedObj: {
key1: "value1",
key2: "value2"
}
};
const { nestedArray: [{ stuff }], nestedObj: { key1, key2 } } = obj;
console.log(stuff);
我不推荐它 - 像这样的代码很难阅读。
考虑这个 'complex' 对象:
const obj = {
nestedArray: [
{ stuff: "things" }
],
nestedObj: {
key1: "value1",
key2: "value2"
}
}
我正在寻找一种优雅的单行解决方案来从 obj
.
key1
、key2
和 stuff
我当前的解决方案如下所示并且工作正常:
const { nestedArray, nestedObj: { key1, key2 } } = obj
const { stuff } = nestedArray[0]
但我宁愿像这样在一行中完成:
const { array[0]: { stuff }, nestedObject: { key1, key2 } } = obj
但显然那是行不通的。有什么办法可以像我想要的那样在一行中做到这一点?还是我对 ES6 的要求太多了?我很乐意接受“否”的答案,只要它能很好地解释为什么不。
你非常接近,只需使用数组解构和对象解构即可得到 stuff
:
const obj = {
nestedArray: [
{ stuff: "things" }
],
nestedObj: {
key1: "value1",
key2: "value2"
}
}
const { nestedArray: [{ stuff }], nestedObj: { key1, key2 } } = obj
console.log({ stuff, key1, key2 })
虽然它是 可能 ,但是通过将 stuff
列为它在嵌套数组中的位置,非常类似于您声明一个包含 [= 对象的数组11=] 属性:
const obj = {
nestedArray: [
{ stuff: "things" }
],
nestedObj: {
key1: "value1",
key2: "value2"
}
};
const { nestedArray: [{ stuff }], nestedObj: { key1, key2 } } = obj;
console.log(stuff);
我不推荐它 - 像这样的代码很难阅读。