2016-01-23 69 views
0

我有以下一段代碼將多個字符串轉換爲數字,這很好,但我不喜歡它的外觀,並且想知道我是否可以將它寫入更好辦法。在Javascript中添加多個字符串作爲數字

Number(result.channels.electricity.chan[0].day[0]._) 
+ Number(result.channels.electricity.chan[1].day[0]._) 
+ Number(result.channels.electricity.chan[2].day[0]._) 
+ Number(result.channels.electricity.chan[3].day[0]._) 
+ Number(result.channels.electricity.chan[4].day[0]._) 
+ Number(result.channels.electricity.chan[5].day[0]._) 

是否有更清晰的書寫方式?

+2

無數的方法來包裹一個循環這個 – charlietfl

回答

3

隨着減少是非常簡單的:

var sum = results.channels.electricity.chan.reduce(function(a, b){ 
    return a + Number(b.day[0]._); 
}, 0); 
+0

這是甜的。謝啦。正是我需要的 – Bazinga777

0

有幾件事情可以做。

  1. 爲了提高可讀性,小的修復將分配chan屬性到一個變量,所以你不必重複整個路徑。例如。使用forEach迭代數組元素並在循環內增加一個變量。
1

嘗試使用while循環

var channels = ["1", "2", "3", "4", "5"], i = -1, res = 0; 
 
while (++i < channels.length) res += Number(channels[i]); 
 
console.log(res)

+0

謝謝,但我的數據結構不允許我使用它。 – Bazinga777

+0

@ Bazinga777 _「我的數據結構不允許我使用這個」_可以描述爲什麼數據結構不允許使用?數據結構是一個數組嗎? – guest271314

+0

我正在解析一個解析爲json的xml文件,這看起來很糟糕,所以這會造成一些混亂 – Bazinga777

1

只是爲了好玩。隨着一些ES6-7的功能:

let chans = results.channels.electricity.chan; 
let total = chans.reduce((sum, { day: [ { _ } ] }) => (sum + Number(_)), 0); 
相關問題