2016-11-10 77 views
0

我有兩個數組,一個使用稅碼(emptaxdeductcode),一個使用這些稅碼支付的金額(emptaxamt)。查找數組中某些字符串的總數

我想查找支付的金額爲,只有稅號31。這些稅碼有不同數量的字符,但我需要的字符總是12個字符。

試圖用一個簡單的for循環,但它出現在第3行它總是顯示0,甚至爲那些有問題的稅法(S)被打破:

var returnedValue = 0; 
for (var q = 0; q < emptaxdeductcode.length; q++) { 
    if (emptaxdeductcode[q].substring(10,11) == "31") { 
     returnedValue += emptaxamt[q]; 
    } else { 
     0; 
    } 
} 
returnedValue; 

我試着以下只是一個測試,它返回true: (這個稅碼並不總是在[5],所以我不能只用這個。加上有多個稅號碼以31結尾的人)

if (emptaxdeductcode[5].substring(10,11) == "31") { 
    "TRUE"; 
} else { 
    "FALSE"; 
} 

所以它必須是for循環中的子字符串,這是造成親blems。任何指導將不勝感激!

編輯:這是一個數據樣本。道歉,如果這種出口奇怪 - 不完全確定如何使表:

emptaxdeductcode | emptaxamt

--- | ---

00-10 | 55.36

00-11 | 8.33

00-12 | 35.63

39-20 | 17.64

39-22 | 0.40

390770040-31 | 9.48

390770040-32 | 2.00

Edit2:我用來構建這個報表的這個軟件不支持很多JS工具/庫。很多帖子在stackoverflow上,對我來說有類似的問題已經用'prototype'函數或者AngularJS和類似的東西解決了。不幸的是,這不適合我。

+1

它如何在第3行中斷? – epascarello

+1

嘗試在處理它之前記錄emptaxdeductcode [q]的值並查看錯誤發生之前的內容。 emptaxdeductcode可以包含任何空值? – alebianco

+1

你能展示你的數據是怎樣的嗎? –

回答

0

我認爲你的主要問題是,你從字符串中使用子僅讀1個字符,而不是2

我想你想

emptaxdeductcode[q].substring(10,12) 

代替。

下面是一些示例代碼和一個JSFiddle。

var emptaxdeductcode = ["123451234531", "123451234532"]; 
var emptaxamt = [10, 20]; 

var returnedValue = 0; 
for (var q = 0; q < emptaxdeductcode.length; q++) 
{ 
    if (emptaxdeductcode[q].substring(10,12) == "31") { 
     returnedValue += emptaxamt[q]; 
    } else { 
     0; 
    } 
} 
alert(returnedValue); 

JSFiddle Code

+0

感謝Chris。我去嘗試這個 - 不幸的是,沒有bueno。即使將其更改爲子字符串(10)也不起作用。 –

+0

很奇怪。它在jsFiddle中完美運行。嘗試將其輸出記錄到應用程序中的控制檯。 console.log(emptaxdeductcode [q] .substring(10,12)); 告訴我們你得到的。 –

0

當你

console.log(emptaxdeductcode[q].substring(10, 11)); 

你會看到你回來3,不31。所以,你需要把它撞擊到12

var emptaxdeductcode = ["00-10", "00-11", "00-12", "39-20", "39-22", "390770040-31", "390770040-32"], 
 
    emptaxamt = [55.36, 8.33, 35.63, 17.64, 0.40, 9.48, 2.00]; 
 

 
var returnedValue = 0; 
 
for (var q = 0; q < emptaxdeductcode.length; q++) { 
 
    if (emptaxdeductcode[q].substring(10, 12) == "31") { 
 
    returnedValue += emptaxamt[q] 
 
    } 
 
} 
 

 
console.log(returnedValue);

我個人要麼使用

var code = emptaxdeductcode[q].substr(-2); 

var code = emptaxdeductcode[q].split("-").pop(); 

var emptaxdeductcode = ["00-10", "00-11", "00-12", "39-20", "39-22", "390770040-31", "390770040-32"], 
 
    emptaxamt = [55.36, 8.33, 35.63, 17.64, 0.40, 9.48, 2.00]; 
 

 

 
var total = emptaxdeductcode.reduce(function(total, code, ind){ 
 
    if (code.split("-").pop() === "31") { 
 
     total += emptaxamt[ind]; 
 
    } 
 
    return total; 
 
}, 0); 
 

 
console.log(total);

相關問題