javascript - 如何将其转换为 es6 箭头函数?在香草 JS
问题描述
嗨,我想将此代码转换为 es6 箭头函数,这里是示例代码。但我收到这样的错误:
let pets = [
{name: "Meowsalot", species: 'cat', age: 2},
{name: "Barksalot", species: 'dog', age: 4},
{name: "Purrsloud", species: 'cat', age: 10}
]
pets.push({
name: 'Puppster', species: 'dog', age: 1
})
let ourTest = pets.map(nameOnly)
function nameOnly(x) {
return x.name
}
let dogs = pets.filter(onlyDogs)
function onlyDogs(x) {
return x.species == 'dog'
}
function onlyBabies(x) {
return x.age < 3
}
let babyDogNames = pets.filter(onlyDogs).filter(onlyBabies).map(nameOnly)
// here is my es6 version
let ourTest = pets.map(nameOnly => nameOnly.name);
let dogs = pets.filter(onlyDogs => onlyDogs.species == "dog");
(onlyBabies) => onlyBabies.age < 3
let babyDogNames = pets.filter(onlyDogs).filter(onlyBabies).map(nameOnly);
console.log(babyDogNames);
解决方案
您在行中传递了一个未声明的箭头函数let babyDogNames = pets.filter(onlyDogs).filter(onlyBabies).map(nameOnly);
。您应该通过任一匿名箭头函数
let babyDogNames = pets.filter(pet => pet.species == 'dog') // filter only dogs
.filter(pet => pet.age < 3) // filter only babies
.map(pet => pet.name); // get names
或将所有箭头函数声明为变量,然后传递它们:
const onlyDogs = pet => pet.species == 'dog';
const onlyBabies = pet => pet.age < 3;
const onlyNames = pet => pet.name;
let babyDogNames = pets.filter(onlyDogs).filter(onlyBabies).map(onlyNames);
推荐阅读
- dynamics-crm - 从补丁中的表单中删除字段并部署到目标环境
- android - AOSP Android Pie 检查是否显示 Keyguard
- web-scraping - 如何在网站中找到完整的 url 路径列表以进行抓取?
- javascript - 我可以在 JSX 标签中使用模板文字吗?
- laravel - 有没有办法在 laravel 迁移中创建一个依赖于外键的自动增量字段
- spring-boot - 由于异常回滚后的Spring批量更新数据库状态
- python - 使用 Cyclus 将 Pandas 中的数据排序到工作表中 - 一张表中的多个数据
- hadoop - 如果我的 hadoop (HDP) 集群已经使用 AD/LDAP,为什么还要对它进行 Kerberise?
- javascript - 下载原始纹理数据以绕过 cors?
- azure - 使用 SFTP-ssh 连接器将从 SFTP 服务器加载的多个新文件复制到 Azure Blob 存储