通過使它們成爲命名函數,很容易省略兩個箭頭函數和匿名函數。這裏是我的建議:
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