为了获得对象的第一个属性而进行的结构分解?

时间:2018-11-16 11:20:16

标签: javascript

对于数组,我们可以根据其索引来定义属性,例如:

const arr = [1, 2, 3];
const [first, second, third] = arr;
console.log(first, second, third)

我只是想知道是否有一种解决方案可以解决类似这样的对象的问题:

const obj = {first: "a", second: "b", third: "c"}
    const {0, 1, 2} = obj; 
//expected: "a", "b", "c"

4 个答案:

答案 0 :(得分:1)

不是。

对象不是按顺序排列的,因此本身没有第一个属性。

您可以先将对象转换为其值的数组……

const obj = {
  first: "a",
  second: "b",
  third: "c"
}
const array = Object.values(obj);
const [foo, bar, baz] = array;
console.log({
  foo,
  bar,
  baz
});

...,但是它不太可能有用,而且肯定不是易于维护的直观代码。

答案 1 :(得分:1)

您可以对对象执行以下操作:

df = df.col1.str[3:].str.rsplit('-', n=1, expand=True).rename(columns={0:'col1',1:'col2'})

print(df)
    col1 col2
0  bb-cc   dd
1     bb   cc
2     bb   cc
3  bb-cc   dd

答案 2 :(得分:1)

尝试一下:

const obj = {first: "a", second: "b", third: "c"}
const indexes = [0, 1, 2]
indexes.map( (val) => { return Object.values(obj)[val] } ) //["a", "b", "c"]

答案 3 :(得分:0)

您可以获取值并将其分配给数组以进行解构。

该顺序实际上是由插入顺序确定的,或者如果键像数组的有效索引一样,则将其按数字排序到顶部。

const
    object = { first: "a", second: "b", third: "c" },
    [first, second, third] = Object.values(object);

console.log(first, second, third);

要提取任意位置,您应该使用索引为object property assignment pattern [YDKJS: ES6 & Beyond]的对象作为新的有效变量。

const
    object = { first: "a", second: "b", third: "c" },
    { 2: foo } = Object.values(object);

console.log(foo);