Javascript数组交换

时间:2011-02-04 21:42:34

标签: javascript

我有javascript数组

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

这里我想检查条件,如果阵列中有宝马。我想把这个“宝马”移动到零位置,然后现有的零值移动到下一个(ist位置)到所有。

请提供一些有关如何处理此方案的建议或解答,

先谢谢。

Chaitu

3 个答案:

答案 0 :(得分: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);
    }
}

答案 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) );
    }
}

答案 2 :(得分: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”的索引 - 零:“a”和“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;
}