解构对象参数的同名属性;允许许多而不是固定数量的参数
Destructuring same-name properties of object arguments; allow many instead of a fixed number of arguments
我有一个函数要接收两个参数(相同 class 的两个对象实例):
class Person {
constructor(name) {
this.name = name;
}
}
const x = new Person('Peter');
const y = new Person('Paul');
const z = new Person('Paul');
const sameName = (a, b) => a.name === b.name;
console.log(sameName(x,y));
console.log(sameName(y,z));
console.log(sameName(x,z));
我知道在函数签名中解构每个人的名字的有效方法是 sameName({name: a},{name: b})
。不知何故感觉笨拙。
class Person {
constructor(name) {
this.name = name;
}
}
const x = new Person('Peter');
const y = new Person('Paul');
const z = new Person('Paul');
const sameName = ({name: a},{name: b}) => a === b;
console.log(sameName(x,y));
console.log(sameName(y,z));
console.log(sameName(x,z));
Q1:我想知道这里是否有更优雅的方式来使用对象解构?
问题 2:我将如何处理接受任意数量 Person
对象(并且仅适用于每个对象的 name
属性 的函数?
我认为不可能使用带有可变数量参数的对象解构...你可以这样做
class Person {
constructor(name) {
this.name = name;
}
}
const x = new Person('Peter');
const y = new Person('Paul');
const z = new Person('Paul');
const sameName = ({ name }, ...people) =>
people.every(person => person.name === name);
console.log(sameName(x,y));
console.log(sameName(y,z));
console.log(sameName(x,z));
我有一个函数要接收两个参数(相同 class 的两个对象实例):
class Person {
constructor(name) {
this.name = name;
}
}
const x = new Person('Peter');
const y = new Person('Paul');
const z = new Person('Paul');
const sameName = (a, b) => a.name === b.name;
console.log(sameName(x,y));
console.log(sameName(y,z));
console.log(sameName(x,z));
我知道在函数签名中解构每个人的名字的有效方法是 sameName({name: a},{name: b})
。不知何故感觉笨拙。
class Person {
constructor(name) {
this.name = name;
}
}
const x = new Person('Peter');
const y = new Person('Paul');
const z = new Person('Paul');
const sameName = ({name: a},{name: b}) => a === b;
console.log(sameName(x,y));
console.log(sameName(y,z));
console.log(sameName(x,z));
Q1:我想知道这里是否有更优雅的方式来使用对象解构?
问题 2:我将如何处理接受任意数量 Person
对象(并且仅适用于每个对象的 name
属性 的函数?
我认为不可能使用带有可变数量参数的对象解构...你可以这样做
class Person {
constructor(name) {
this.name = name;
}
}
const x = new Person('Peter');
const y = new Person('Paul');
const z = new Person('Paul');
const sameName = ({ name }, ...people) =>
people.every(person => person.name === name);
console.log(sameName(x,y));
console.log(sameName(y,z));
console.log(sameName(x,z));