对于数组,我们可以根据其索引来定义属性,例如:
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"
答案 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);