我有javascript数组
var s=[{"1":"one"},{"2":"two"},{"3":"three"},{"ALL":"ALL"}];
这里我想检查条件,如果阵列中有宝马。我想把这个“宝马”移动到零位置,然后现有的零值移动到下一个(ist位置)到所有。
请提供一些有关如何处理此方案的建议或解答,
先谢谢。
Chaitu
答案 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;
}