ES6的新解构分配功能现在已经众所周知(Babel的REPL上的实时副本); 在已存在的变量的情况下:
let a, b; // Existing variables
let o = {a: "a", b: "b"}; // An object to get values from
// ...
({a, b} = o); // Set them to the props from `o`
console.log(a); // "a"
console.log(b); // "b"
Run Code Online (Sandbox Code Playgroud)
ES6中是否有简单的说法?基于具有相同名称的变量设置现有对象的属性?(除了显而易见的o.a = a; o.b = b;)
注意我不是在讨论创建对象时,我们可以使用美妙的新对象初始化器语法来实现这一点,这样我们就不会不必要地重复这些名称:
let a = "a";
let b = "b";
let o = {a, b};
Run Code Online (Sandbox Code Playgroud)
但是如果我已经有了一个对象,我可以在ES6中进行某种结构分配吗?
例如,我有一个包含3个数字的数组:
var arr = [124, -50, 24];
Run Code Online (Sandbox Code Playgroud)
我需要将此数组转换为对象:
{
x: 124,
y: -50,
z: 24
}
Run Code Online (Sandbox Code Playgroud)
我不想为此使用"旧式"语法,例如:
{
x: arr[0],
y: arr[1],
z: arr[2]
}
Run Code Online (Sandbox Code Playgroud)
所以现在,我正在使用这种语法:
const [x, y, z] = [...arr];
const obj = {x, y, z};
Run Code Online (Sandbox Code Playgroud)
但是,有没有办法用直接的解构数组来对象而不需要临时变量?
我对 Node.JS 相当陌生,我真的很讨厌 Promise.all 返回数组的语法。
例如。
const requiredData = await Promise.all([
getFirst(city),
getSecond(hubIds),
getThird(city, customerCategoryKey),
getFourth(request)
])
const firstData = requiredData[0];
const secondData = requiredData[1];
const thirdData = requiredData[2];
const fourthData = requiredData[3];
Run Code Online (Sandbox Code Playgroud)
我需要在单独的代码行中单独获取它们。有没有类似的方法
const {
firstData,
secondData,
thirdData,
fourthData
} = await Promise.all([
getFirst(city),
getSecond(hubIds),
getThird(city, customerCategoryKey),
getFourth(request)
])
Run Code Online (Sandbox Code Playgroud)
基本上,我真的很喜欢是否有比第一个代码片段更简洁的方法。
蒂亚!