通过使它们成为命名函数,很容易省略两个箭头函数和匿名函数。这里是我的建议:
function transformEmployeeData(arrayOfArray) {
function transform(arr) {
const map = {};
function registerMap (arr) {
map[arr[0]] = arr[1];
}
arr.forEach(registerMap);
return obj;
}
return arrayOfArray.map(transform);
};
我们可以重写命名功能,使用绑定到一个函数表达式:
const transformEmployeeData = function(arrayOfArray) {
const transform = function (arr) {
const map = {};
const registerMap = function (arr) {
map[arr[0]] = arr[1];
}
arr.forEach(registerMap);
return obj;
}
return arrayOfArray.map(transform);
};
,然后我们可以改写这回箭头功能:
const transformEmployeeData = (arrayOfArray) => {
const transform = (arr) => {
const map = {};
const registerMap = (arr) => {
map[arr[0]] = arr[1];
}
arr.forEach(registerMap);
return obj;
}
return arrayOfArray.map(transform);
};
然后,我们可以用它的定义替换变量:
const transformEmployeeData = (arrayOfArray) => {
return arrayOfArray.map((arr) => {
const map = {};
arr.forEach((arr) => {
map[arr[0]] = arr[1];
});
return obj;
});
};
当只有一个参数,那么括号是可选的。如果身体是一个表达式,你可以省略curlies。喜欢的Airbnb表明我们不会删除parenses如果我们有花括号
const transformEmployeeData = arrayOfArray =>
arrayOfArray.map(arr => {
const map = {};
arr.forEach(arr => {
map[arr[0]] = arr[1];
});
return obj;
});
编码风格,因而:因此,我们可以删除可选语法
const transformEmployeeData = arrayOfArray =>
arrayOfArray.map((arr) => {
const map = {};
arr.forEach((arr) => {
map[arr[0]] = arr[1];
});
return obj;
});
箭功能不绑定this
所以这些都是平等的只是因为我们没有使用this
。
'返回obj'不应该是里面'forEach' – slebetman
@slebetman,谢谢。但是,纠正此问题后,代码仍然不起作用。 – ayeteo
您原来使用两个'在嵌套循环中声明了'变量,所以它的结果无关,与你,在你的第二个功能,定义为'x',所以错误可能是在那里。但是,箭头函数非常简单,您不需要了解它们的复杂性,就可以理解它们:'(arguments)=>执行并返回结果。它只是没有自己的'this'对象(在大多数情况下,你不会使用它)。 – somethinghere