首页 > 解决方案 > 如何将其转换为 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);

标签: javascript

解决方案


您在行中传递了一个未声明的箭头函数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);

推荐阅读