Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组交换_Javascript - Fatal编程技术网

Javascript数组交换

Javascript数组交换,javascript,Javascript,我有javascript数组 var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}]; 这里我想检查条件,如果BMW存在于数组中。我想将此“BMW”移动到零位置,并将现有的零值移动到下一个位置(ist位置) 请给出一些关于如何处理这种情况的建议或答案 提前谢谢 Chaitu在您最近修订的问题中,您不再使用数组。因此,没有实际的立场。只有属性和值没有保证顺序 您以前的版本如下所示: var s=[{"1":"one"},{"2":

我有javascript数组

var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}];
这里我想检查条件,如果BMW存在于数组中。我想将此“BMW”移动到零位置,并将现有的零值移动到下一个位置(ist位置)

请给出一些关于如何处理这种情况的建议或答案

提前谢谢


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,len = s.length; i < len; i++ ) {
    if( "ALL" in s[i] ) {
        s.unshift( s[i] );
        s.splice(i+1,1);
    }
}
for(变量i=0,len=s.length;i
试试这个:

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) );
    }
}
var s=[{“1”:“1”},{“2”:“2”},{“3”:“3”},{“ALL”:“ALL”}]
对于(变量i=0;i
将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;
}

您发布的代码无效。你能把你的实际密码贴出来吗?编辑:问题已用更正的代码更新。为什么将此对象放入数组中?这些值是否有效?我认为下面的方法也可以:
var s={1:'one',2:'two',ALL:'ALL'}
您真的需要交换任意元素,还是尝试对数组进行排序?如果要排序,有一种更简单的方法。@PatricK:我根据andre_roesti更正了代码。您的数组声明无效。你能纠正它吗?有可能不在所有元件上循环。你需要“所有”元件的位置来拼接它。如果使用If(typeof s['ALL']['ALL']!='undefined'&&s['ALL']['ALL']!=null&&s['ALL']['ALL']='ALL'),则需要另一个数组迭代来将该元素从其位置移除并移动到数组的开头(在js中无法执行某些array.unique()操作,而jQuery.unique()仅处理DOM元素数组)。是否可以在不循环所有元素的情况下执行此操作。您可以像中一样执行
.sort()
。我不确定它是否会影响数组中的其他项。