1

オブジェクト配列の要素の値を変更するにはどうすればよいですか? 以下の例では、配列から 1 つのオブジェクトを削除し、残りのオブジェクトの要素 (数値) を変更します。削除部分は正常に機能しますが、他の部分は機能しません。

私はjsFiddleを持っています

コード:

var x =[
    {name : 'myname' , number : '10' , color:'green'},
    {name : 'yourname' , number : '15' , color:'blue'}
]; 

$.each(x , function(index ,value) {
    if(value.number == '10'){
        x.splice(index , 1) ; 
    } 
    else {
        x[i].number = '20' ; 
    }
    console.log(x) ; 
});​
4

4 に答える 4

2

.map()このような新しい配列を構築するために使用できます

var x =[{name : 'myname' , number : '10' , color:'green'},
  {name : 'yourname' , number : '15' , color:'blue'}] ; 

var newX = $.map(x , function(obj ,index){
    if(obj.name == 'yourname'){
        return null;
    }else{
       obj.number = '20';
       return obj; 
    }
});

console.log(newX);

デモ : http://jsfiddle.net/joycse06/C3d9T/3/

于 2012-06-18T16:49:39.070 に答える
0

これを試して。

 var x =[{name : 'myname' , number : '10' , color:'green'},
       {name : 'yourname' , number : '15' , color:'blue'}] ; 

 $(x) . each(function(index ,value){
    if(value.number != undefined && value.number == '10'){
        x.splice(index , 1) ; 
    }else {
       if(value.number != undefined){
           value.number= '20' ; 
       }
    }
    console.log(x) ; 
});​

これがデモです

そのオブジェクトインデックスに未定義のチェックを使用します。

于 2012-06-18T16:58:49.083 に答える
0

これを行うために使用できるよう$.map()です。

var new_array = $.map(x, function (el) {

    if (el.number === '10') {
        // remove this
        return null;
    } else {
        // transform into something else
        el.number = '20';
        return el;
    }

});

これにより、新しい配列が作成されることに注意してください。戻り値を古い変数に割り当てることで、古い配列を上書きできます。

x = $.map(x, function (el) { });
于 2012-06-18T16:52:01.877 に答える
0

ループしている配列の要素を削除するときは、ループ カウンターをデクリメントする必要があります。これが jQuery の each() で簡単に実行できるかどうかはわかりません。通常の for ループを使用できます。

for(var i = 0; i < x.length; i++) {
    var value = x[i];
    if(value.number == '10') {
        x.splice(i, 1); 
        i--;
    }
    else {
        value.number = '20'; 
    }
    console.log(x); 
}

ここにデモがあります - http://jsfiddle.net/bFYj7/

于 2012-06-18T16:53:28.507 に答える