我有JavaScript數組Javascript數組交換
var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}];
在這裏我要檢查車況,如果寶馬目前在array.I要移動這個「BMW」零位置和現有的零值,未來移動(ist position)給ALL。
請給出一些建議或解答如何處理這種情況下,
在此先感謝。
Chaitu
我有JavaScript數組Javascript數組交換
var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}];
在這裏我要檢查車況,如果寶馬目前在array.I要移動這個「BMW」零位置和現有的零值,未來移動(ist position)給ALL。
請給出一些建議或解答如何處理這種情況下,
在此先感謝。
Chaitu
在你最近的問題進行修訂,刪除不再使用的數組。因此沒有實際的位置。只有屬性和值沒有保證順序。
您以前的版本是這樣的:
var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}];
,可能這樣來完成:
for(var i = 0,len = s.length; i < len; i++) {
if("ALL" in s[i]) {
s.unshift(s[i]);
s.splice(i+1,1);
}
}
試試這個:
var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}]
for (var i = 0; i < s.length; i++)
{
if (typeof s[i]['ALL'] != 'undefined' && s[i]['ALL'] != null && s[i]['ALL'] == 'ALL')
{
s.unshift(s.splice(i, 1));
}
}
請使用Array.sort( )帶一個功能。
var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}];
s = s.sort(function(a,b){
return (b.ALL == "ALL") ? 1 : 0;
});
返回值:
- 小於0:排序的 「a」 爲大於 「b」 的
較低折射率 - 零: 「一」 和 「b」 應被認爲是相等的,並且沒有排序執行。
- 大於0:將「b」排序爲低於「a」的索引。
附錄
因爲你改變了你的問題......
var s = { 1 : 'one', 2: 'two', ALL: 'ALL' }; // which is NOT an array but a literal object, BIG difference.
if (s.ALL == "ALL") {
s[ 0 ] = "ALL";
delete s.ALL;
}
您發佈的代碼是無效的。你能否發佈你的實際代碼?編輯:問題已更新與更正的代碼。 – user113716 2011-02-04 21:47:31
爲什麼你把這個對象放在一個數組中?這些值甚至有效嗎?我想下面也會這樣做: `var s = {1:'one',2:'two',ALL:'ALL'}` – anroesti 2011-02-04 21:50:31
你真的需要交換任意元素,還是試圖排序數組?如果你正在整理,有一個更簡單的方法。 – 2011-02-04 21:54:13