【发布时间】:2019-08-01 20:10:21
【问题描述】:
此函数将一组驱动程序对象作为第一个参数,并使用一个 JavaScript 对象指定属性和相应的值。
例如,exactMatch(drivers, { revenue: 3000 }) 将返回所有收入属性等于 3000 的司机,exactMatch(drivers, { name: 'Bob' }) 将返回所有姓名属性等于 Bob 的司机。
我尝试使用地图和过滤器进行设置,但没有成功。我尝试使用带有映射或过滤器的 ES6 格式重写此代码,或者只是重构以获得更好的代码。任何帮助,将不胜感激!总的来说,我对编程和 JS 非常陌生。
function exactMatch(drivers, obj){
const driverMatch = [];
for (const driver of drivers){
for (const key in obj){
if (driver[key] === obj[key]){
driverMatch.push(driver);
}
}
}
return driverMatch;
}
重构以获得更好的代码并使用 JS ES6。
【问题讨论】:
-
map和filter不是 ES6 - 它们在 ES5 中可用。 -
obj中是否只有一个键/值或更多,然后会发生什么?应该所有属性匹配还是只匹配一个? -
我应该更具体一些 - 希望将箭头功能与地图或过滤器一起使用。
-
@AlisonGolden 使用
.map和.filter与普通函数和使用箭头函数之间(几乎)没有区别。他们是interchangeable unless with some caveats。但是对于这种情况,这些都不适用。 -
根据实验室测试,它在 obj 中只有一个键/值对被传入。
标签: javascript