Spread Operator在数组中添加具有键的元素

时间:2019-11-04 13:33:40

标签: javascript

我想知道是否可以使用Spread Operator通过特定键在数组中添加元素。

let foo = ['a','b','c'];
foo = [...foo,'d'];

在这种情况下,foo[3]将是d。但是我可以在我的d数组中添加带有custon键的foo,然后使用类似foo['customKey']的内容进行访问吗?

2 个答案:

答案 0 :(得分:0)

数组是JavaScript中的对象,因此它们可以具有属性:

let foo = ['a','b','c'];
foo['customKey'] = 'd';
//Note using a for-in not for-of to iterate over enumerable & string properties
for (i in foo){
  console.log("The type of index is also a string: ", typeof i, i);
}

实际上,当您使用数字索引访问数组元素时,它会被强制转换为字符串。

但是对于您的用例,您应该考虑使用一个对象:

let foo = {'foo' : ['a' , 'b','c']};
foo['customKey'] = 'd';
//Note using a for-in not for-of to iterate over enumerable & string properties
for (i in foo){
  console.log(foo[i]);
}

//Using object destructing
const d = {'anotherKey': 'e'};
const newFoo = {...foo, ...d};
console.log(newFoo);

答案 1 :(得分:0)

您可以采用Object.assign而不是散布数组,因为这仅允许为新数组采用iterable项。

let foo = ['a','b','c'];

foo = Object.assign([], [...foo], { customKey: 'd' });

console.log(foo);
console.log(foo.customKey);