如何在函数定义中使用ES6多重析构参数?

时间:2017-11-09 06:19:04

标签: 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;
});

现在,正如您所看到的,只有namea对象的b属性已在函数中使用。那么我将如何使用object destructuring来改变代码,如下所示:

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

1 个答案:

答案 0 :(得分:3)

您可以在解构期间指定其他名称:

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

(您可以使用 localeCompare 而不是if else逻辑)