2011-02-04 42 views
-1

我有JavaScript數組Javascript數組交換

var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}]; 

在這裏我要檢查車況,如果寶馬目前在array.I要移動這個「BMW」零位置和現有的零值,未來移動(ist position)給ALL。

請給出一些建議或解答如何處理這種情況下,

在此先感謝。

Chaitu

+0

您發佈的代碼是無效的。你能否發佈你的實際代碼?編輯:問題已更新與更正的代碼。 – user113716 2011-02-04 21:47:31

+0

爲什麼你把這個對象放在一個數組中?這些值甚至有效嗎?我想下面也會這樣做: `var s = {1:'one',2:'two',ALL:'ALL'}` – anroesti 2011-02-04 21:50:31

+0

你真的需要交換任意元素,還是試圖排序數組?如果你正在整理,有一個更簡單的方法。 – 2011-02-04 21:54:13

回答

2

在你最近的問題進行修訂,刪除不再使用的數組。因此沒有實際的位置。只有屬性和值沒有保證順序。


您以前的版本是這樣的:

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); 
    } 
} 
0

試試這個:

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)); 
    } 
} 
0

請使用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; 
}