2011-10-23 60 views
1

此代碼:string.split()返回額外項目(功能)

allUID = $("#allservices_"+categoryUID).attr("value").split(','); 

應用於元素與

value=" 
1298698f-62a0-41da-9303-563e317f97a1, 
75b79dc8-873f-4e80-9174-64e3bf0b7e7b, 
7add7028-dd32-40cc-baa3-a8dbdfe36dc0, 
0b136659-19e5-4b58-9b58-23a5ba7383fe, 
73a6a712-4aae-4101-ad36-77feea188aad, 
8f5d7f01-b854-4a6f-9cf6-cc6554835c8a, 
f0c1d8dc-a96d-402a-b41b-74f753a4c313, 
770d1178-8c17-4e9d-8a31-bff8a15097b3 
" 

返回此:

0 "1298698f-62a0-41da-9303-563e317f97a1" 
1 "75b79dc8-873f-4e80-9174-64e3bf0b7e7b" 
2 "7add7028-dd32-40cc-baa3-a8dbdfe36dc0" 
3 "0b136659-19e5-4b58-9b58-23a5ba7383fe" 
4 "73a6a712-4aae-4101-ad36-77feea188aad" 
5 "8f5d7f01-b854-4a6f-9cf6-cc6554835c8a" 
6 "f0c1d8dc-a96d-402a-b41b-74f753a4c313" 
7 "770d1178-8c17-4e9d-8a31-bff8a15097b3" 
contains function() 
removeDoubles function() 
reversed function() 

在哪裏這些額外的函數來自哪裏?

+0

請問,你是怎麼打印出每個元素的數組? – arnorhs

+0

在這種情況下,在代碼中的螢火蟲我返回值從幾個數組中分離,串聯在一個字符串中html =「uid:」+ uid ...etc – Campbell

回答

5

It didn't happen for me

很可能,您正在使用for (in)對結果數組進行迭代。不要那樣做;使用正常的for循環或jQuery的each()

代碼中的其他位置可能會擴充Array原型,並且不會將屬性指定爲不可枚舉(僅在具有defineProperty()和朋友的最新JavaScript版本中才有可能)。

jsFiddle(不要這樣做)。

您應該使用val(),而不是attr('value')

+0

使用(我在...),並感謝提示。可能是Plone和朋友。謝謝! – Campbell

-1

可能來自jQuery。如果jQuery添加了Array.prototype.contains,Array.prototype.removeDoublesArray.prototype.reversed,我不會感到驚訝。

+3

jQuery不會觸及'Array'原型。 – alex

1

他們(可能是你已經包括了網頁上的腳本)是添加到陣列中的原型功能。它們不是數組的一部分,但是在使用for ...來迭代數組時,它們可能會成爲問題。

擴展內置對象的原型在大多數情況下並不被認爲是一種好的做法,所以如果可以的話,我會建議替換它們。否則,請使用常規for for循環for .. in。

0

東西在你的代碼庫中其他人在添加這些功能爲Array實例。我不知道是什麼,因爲jQuery和Prototype都不添加這些函數。

注意一些答案表明數組的原型已被更改 - 可能不是這種情況。根據你如何輸出它們,一些庫可能已經將這些函數添加到了數組本身,而不是它的原型(這很糟糕)。

+0

你怎麼知道它不是原型?我認爲如果原型已經增加了 –

+0

,那麼firebug會顯示一個類似上面的數組,如果你正在使用,可能。那是個很好的觀點 – arnorhs

0

迭代的數組這個代替:

for (var i = 0, len = allUID.length; i < len; i++) { 
    console.log(allUID[i]); 
} 

陣列上迭代這種方式時,您將看不到任何這些額外的屬性。

那些額外的項目出現是因爲您在迭代數組時使用了for (i in allUID) {},並且該選項將拾取通過某個框架或正在使用的填充項添加到Array對象的額外屬性。你絕對不應該用for (x in array)迭代一個數組。僅使用該表單來迭代對象的所有屬性。