SpreadElement[Yield]:
...AssignmentExpression[In, ?Yield]
Run Code Online (Sandbox Code Playgroud)
这与Spread语法相同
扩展语法允许在可能需要零个或多个参数(用于函数调用)或元素(用于数组文字)的位置扩展数组表达式或字符串等可迭代的值,或者在零或更多的位置扩展对象表达式键值对(对象文字)是预期的.
句法
对于函数调用:
Run Code Online (Sandbox Code Playgroud)myFunction(...iterableObj);对于数组文字:
Run Code Online (Sandbox Code Playgroud)[...iterableObj, 4, 5, 6]
在MDN文档中描述?
什么是SpreadElement和/或扩展语法的用例; 如果SpreadElement和传播语法不同,它们的具体方式有何不同?
您可以使用解构分配来定义ES6中的枚举,如下所示:
var [red, green, blue] = [0, 1, 2];
Run Code Online (Sandbox Code Playgroud)
相反,我希望解构分配的右侧是动态的.例如:
var MAX_ENUM_SIZE = 32;
var ENUM = new Array(MAX_ENUM_SIZE);
for (var i = 0; i < MAX_ENUM_SIZE; i++) ENUM[i] = i;
var [red, green, blue] = ENUM;
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎是一个黑客.如果我希望将来有更大的枚举怎么办?因此,我正在考虑使用迭代器进行解构赋值,如下所示:
var [red, green, blue] = enumeration(/* I don't want to specify size */);
Run Code Online (Sandbox Code Playgroud)
但是,我不认为可以使用迭代器进行解构赋值[需要引证].有没有办法实现这个目标?
我试图从一组对象创建一个数组.我想从每个对象中获取父亲的名字.例如:
var people = [
{
name: "Mike Smith",
family: {
father: "Harry Smith",
}
},
{
name: "Tom Jones",
family: {
father: "Richard Jones",
}
}
];
var fathers = [];
for (var {family: { father: f } } of people) {
console.log("Father: " + f);
father.push(f);
}
Run Code Online (Sandbox Code Playgroud)
反正有没有在es6中没有循环的情况下制作fathers阵列people?
如何使用扩展运算符访问对象数组中的元素?
const array = [{ obj: 1},{ obj: 2}]
console.log([...array].obj)
// Output undefined
console.log([...array.obj])
// Output Uncaught TypeErrorRun Code Online (Sandbox Code Playgroud)
我看过这篇文章在对象数组上使用扩展运算符?这非常相似,但它们不会尝试访问元素。
那么是否可以在对象数组上使用扩展运算符来访问元素?如果是这样怎么办?