2014-01-15 44 views
-4

我發現下面的代碼真正的陣列makeArray不返回與jQuery型

讓我們看到下面的例子:

var fakeArr = {0,1,2}; 
var realArr = $.makeArray(fakeArr); 
if($.type(realArr)==="array") 
$('div').text(realArr.join());// doesn't return the array text 

我也試圖與$.isArray()這也確實在陣列

不結果

但如果我只是這樣做:

var realArr = [0,1,2]; 
if($.type(realArr)==="array") 
$('div').text(realArr.join());// returns the array text 

所以,$.makeArray真的返回真正的數組?

+0

你的實際問題是什麼? – jfriend00

+0

$ .makeArray()應該將{0,1,2}轉換爲[0,1,2]。 –

+1

@ C-link我們有一個很長的轉換,你仍然想轉換'{0,1,2}',我們怎麼說? – xdazz

回答

1
var fakeArr = {0,1,2}; 

這只是無效的JavaScript。

請參閱$.makeArray的說明,它用於將類似數組的對象轉換爲真正的JavaScript數組。類似於NodeList被稱爲類似數組的對象。


更新:

如果你的意思是,爲什麼你的第一塊代碼轉換fakeArray['Addy']['Addy', 'Subtracty'],那是因爲你的fakeArraylength只有1,這應該是2

陣列狀物體 - 那些具有.length財產和

+0

但與$ .makeArr()被轉換爲數組中看到$ .map()函數 –

+0

@ C-link這是語法錯誤,你運行代碼? – xdazz

+0

只看到這裏http://api.jquery.com/jquery.map/ –

0

我剛剛看到你的問題上.length - 1指數的值,你想數組了一個對象的什麼在我看來,由頂部提供,如果你去jsonlint.com你可以看到你的javascript對象是無效的,所以可能是這樣的。

試試這個:

var fakeArray = {"length": "1", "0": "Addy", "1": "Subtracty"}; 
// Therefore, convert it to a real array 
var realArray = $.makeArray(fakeArray); 

console.log(realArray); 

這裏你的對象鍵和值已引述""雙引號。

測試在這裏:Demo @ Fiddle

+0

這不是關於JSON,它只是JavaScript。 – xdazz

+0

@xdazz我同意,但要確保它的有效性,我只是嘗試了一些jsonlint,並表明它是無效的。 – Jai

+0

它在JavaScript中完全有效。 – xdazz