javascript - 如何在函数定义中使用 ES6 多个解构参数?

标签 javascript ecmascript-6 object-destructuring

我想知道当两个参数类型相同时如何使用赋予函数的解构多个参数。
例如,假设我有以下代码:

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;
});

现在,如您所见,函数中仅使用了 ab 对象的 name 属性。那么我将如何使用 object destructuring更改代码,如下所示:

items.sort(({name}, {name}) => {
  // code to use
});

最佳答案

您可以在解构期间指定另一个名称:

items.sort(({name : A}, {name : B}) => 
  A.toUpperCase().localeCompare(B.toUpperCase())
);

(您可以使用localeCompare代替if else逻辑)

关于javascript - 如何在函数定义中使用 ES6 多个解构参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47195124/

相关文章:

javascript - 未捕获的类型错误 : Immutable prototype object '#<Object>' cannot have their prototype set

javascript - 使用自定义 attr 添加 css?

javascript - jslint:如何抑制 'Expected ' Object.create(null )' and instead saw ' new Object'。警告?

javascript - 在 AtScript 中声明 Angular 2.0 装饰器的正确语法是什么?

javascript - 如何通过解构赋值将数据绑定(bind)到这个?

javascript - jQuery 如何只编辑当前级别的 html 文本?

javascript - 如何根据需求更改angularjs中的按钮标签?

knockout.js - ES5 knockout 到 ES6 knockout

javascript - 什么是解构赋值及其用途?

javascript - 使用对象解构时省略属性变量