如何在函数定义中使用 ES6 多个解构参数?
How to use ES6 multiple destructured arguments in function definition?
我想知道当两个参数的类型相同时,如何使用赋予函数的解构多个参数。
例如,假设我有以下代码:
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
// sort by name
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});
现在,如您所见,函数中仅使用了 a
和 b
对象的 name
属性。那么我将如何使用 object destructuring 来更改代码,如下所示:
items.sort(({name}, {name}) => {
// code to use
});
你可以在解构过程中指定另一个名字:
items.sort(({name : A}, {name : B}) =>
A.toUpperCase().localeCompare(B.toUpperCase())
);
(您可以使用 localeCompare 而不是您的 if else 逻辑)
我想知道当两个参数的类型相同时,如何使用赋予函数的解构多个参数。
例如,假设我有以下代码:
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
// sort by name
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});
现在,如您所见,函数中仅使用了 a
和 b
对象的 name
属性。那么我将如何使用 object destructuring 来更改代码,如下所示:
items.sort(({name}, {name}) => {
// code to use
});
你可以在解构过程中指定另一个名字:
items.sort(({name : A}, {name : B}) =>
A.toUpperCase().localeCompare(B.toUpperCase())
);
(您可以使用 localeCompare 而不是您的 if else 逻辑)