2014-07-18 87 views
0

我遇到問題,爲什麼使用.split()函數。 不知何故當我張開我的線的陣列中的第一個[0]元件可以被訪問,但第二[1]不能split()未給出預期結果

我有以下字符串:

,{"relationID":"000001","recID":"1d2712eb-4f08-4b4f-b6e9-600c9631b503" 

和代碼下面是我如何努力拆分此(tempArray含有類似上面的字符串斧數):

var templine = tempArray[i].substr(1, tempArray[i].length); 
//alert(templine); 
var line = templine.split(','); 
var s1 = line[0].split('"')[3]; 
var s2 = line[1].split('"')[3]; 

當我使用警報(S1)或警報(S2)我做然而得到的值,如下因素誤差總是發生在最後一行(var s2):

caught TypeError: Cannot read property 'split' of undefined

這導致我腳本的其餘部分崩潰,並且它不會完成它應該顯示的內容,顯示一個空白頁面。

我的問題,這裏出了什麼問題?爲什麼s1能夠正常工作,而s2除了行數組的索引崩潰我的腳本之外完全相同。

我想強調當我使用alert函數來檢查我的變量s1和s2的值,他們確實包含正確的值。

編輯: 可能是一個很好的獎金,因爲可能有一個easyer的方式。 後我已經得到的值S1和S2我想將它們放在一個地圖像這樣:

map[s2] = s1; 

,你可能會說我使用的字符串是分裂1個堆積如山的字符串的結果('} 「)。這裏顯示的代碼就是我在循環這個數組的時候所做的。

+3

由於錯誤狀態,「行[1]」未定義。 – forgivenson

+0

我沒有任何問題運行您的代碼,因爲它是。 – Vache

+0

運行你的代碼沒有問題 – Mritunjay

回答

2

這隻能由嘗試訪問真正爲undefined的陣列上的元素引起。可能你的意見不是你所期待的。

在嘗試讀取數組的索引之前,請檢查line.length > 1

因爲它似乎是一個JSON,可能你應該嘗試解析JSON,它會讓你的代碼更具可讀性和可靠性。使用之前請檢查JSON.parse瀏覽器兼容性(IE8 +)。

例如:

var data = JSON.parse('{ "field1": "value1", "field2": "value2" }'); 

var s1 = data['field1']; 
var s2 = data['field2']; 

希望我幫助。

+0

它肯定是我在找的東西,但仍然存在一個錯誤,可能是@forgivenson關於我的數據的說法並不如我預期的那樣。 編輯不大可能,它實際上是意想不到的輸入。 – Vincent

+0

嘗試在推特上,這是在我的個人資料,但我真的沒有很多的空閒時間。你總是可以在這裏問,如果我知道如何幫助,我會試一試 –

+0

Nvm我已經知道了,並解析了一個完整的jason對象。感謝無論如何,我真的apreciate它:) – Vincent