使用地图的胖箭头用法

时间:2015-12-29 14:11:33

标签: javascript functional-programming

JavaScript新手在这里。在尝试使用带有胖箭头的Arrray.map时,我遇到了编译错误。下面是我的示例代码以及错误。



var employeesWithComplexLocation = [{
  "name": "jon",
  "location": {
    "country": "usa",
    "city": "austin"
  }
}, {
  "name": "jane",
  "location": {
    "country": "usa",
    "city": "houston"
  }
}, {
  "name": "mary",
  "location": {
    "country": "usa",
    "city": "dallas"
  }
}];

var employeesWithOnlyCity = employeesWithComplexLocation.map(function(element) {
  return {
    name: element.name,
    location: element.location.city
  };
});


console.log(employeesWithOnlyCity);
console.log('Now using fat arrow:')

employeesWithOnlyCity = employeesWithComplexLocation.map(e => {
  name: e.name,
  location: e.location.city
});

console.log(employeesWithOnlyCity);




Array.map按预期使用匿名函数工作,但在使用胖箭头时会出现以下错误。

employeesWithOnlyCity = employeesWithComplexLocation.map(e => {
  name: e.name,
  location: e.location.city
});

SyntaxError: Unexpected token :

胖箭头适用于Array.every或Array.filter。不知道我在这里缺少Array.map

1 个答案:

答案 0 :(得分:5)

第二次使用导致错误的原因是因为使用javascript =>运算符{}表示函数体,而不是对象。关于箭头函数的MDN文章提到了这个here,并提供了一个更详尽的解释链接(here),说明了这一点

  

ES6中的规则是{紧随箭头后是   总是被视为一个块的开始,而不是一个对象的开始。

如果你需要从箭头函数返回一个对象,你应该将对象包装在括号中,让Javascript知道不要期望一个语句块。



var test = e => ({test: e});
document.getElementById("output").innerHTML = JSON.stringify(test("My Value"));

Value: <span id="output">...</span>
&#13;
&#13;
&#13;