2013-07-19 51 views
3

我不明白爲什麼JSON.parse('[123]')返回一個整數123?它不應該返回一個數組[123]爲什麼JSON.parse('[123]')返回123?

這是fiddle

如何在JSON.parse()之後獲得一個整數的數組?

+6

'Array.isArray(JSON.parse('[123]'))=== true'。 – tjameson

+0

'>> JSON.parse('[123]')// [123]' - 你在說什麼?它是== 123而不是=== 123。 js只是試圖提取數字 –

回答

10

一個數組,只有當它打印,不打印托架。

看看這個兩個項目:http://jsfiddle.net/2z355/4/

它打印爲123,456,也沒有括號。

el.innerHTML = JSON.parse('[123]'); // The one item: 123 
el.innerHTML = JSON.parse('[123]')[0]; // First item of array: 123 
el.innerHTML = JSON.parse('[123,456]') // Both values: 123,456; 
el.innerHTML = JSON.parse('[123,456]')[0] // First item: 123; 

而且還

el.innerHTML = typeof JSON.parse('123'); // number 
el.innerHTML = typeof JSON.parse('[123]'); // object *) 

我預料「陣」存在,但它原來是一個對象。也許我最近一直在PHP過多。儘管如此,這不是一個數字。 :) 幸運的是下一行工作(感謝icktoofay)。

el.innerHTML = JSON.parse('[123]') instanceof Array; // true 
+2

另一個例子:JSON.parse(「[1,[[2],3]]」)= 1,2,3 – Andries

+0

該死的,我應該剛剛檢查過它的類型。順便說一句,在JavaScript中沒有「數組」數據類型,這就是爲什麼它顯示「對象」。 'Array'只是Object的後代。 – Eye

6

它是一個整數的數組;只是JavaScript的怪癖使得數組的字符串表示形式爲以逗號連接的元素的字符串表示形式,而沒有[]

你知道它是一個數組,因爲

  1. result instanceof Array
  2. JSON.stringify(result) === '[123]'
相關問題