2017-07-24 55 views
0

好的工作,所以我有一些幫助一對夫婦個月前拿出一個解決方案,以保持元素的計數的數組:Loop through multiple array and keep count of each element轉換減少功能與IE

該解決方案完全爲我工作,直到我意識到它使用ES6,這不被IE 11支持。我試圖將其轉換爲使用函數而不是箭頭函數,以便它可以在所有瀏覽器上工作,但是遇到一些問題。

下面是當前的代碼並不在IE瀏覽器:

var b = data.reduce((acc, cur) => { 
    cur.ProductHandlingTypes.map(({ Name }) => Name).forEach(n => acc[n] = (acc[n] || 0) + 1); 
    return acc; 
}, 
{}); 

如果有人能指導我什麼需要改變了這裏,以便它在IE工程,將是偉大的!

回答

1

IE 11不支持箭頭函數[1],也不解構[2],所以將其轉換爲ES5語法:

var b = data.reduce(function(acc, cur) { 
    cur.ProductHandlingTypes 
    .map(function(obj) { 
     return obj.Name 
    }) 
    .forEach(function(n) { 
     return acc[n] = (acc[n] || 0) + 1 
    }) 

    return acc 
}, {}); 

[1] http://caniuse.com/#feat=arrow-functions

[2] http://kangax.github.io/compat-table/es6/#test-destructuring

+0

謝謝!我知道箭頭功能沒有得到支持,但沒有意識到解構不夠好。 – Quiver

1

刪除拆分。

cur.ProductHandlingTypes.map((obj) => obj.Name).forEach(...