5

配列がvar arr = [3,4,5,6,7,9];あり、次のように内容をログに記録するとします。

$.each(arr, function(k, v) {
  console.log(v);
}

内容をログに記録すると、現在の値がたとえばよりも大きいかどうかを確認したいと思いますvar limit = 5;

現在の値が大きい場合は、limitその値を置き換え/変更して、文字を言って、Aそのように出力します。したがって、ログに記録されたarr配列は次のようになります3,4,5,A,A,A

私は次のようなことを考えていました:

$.each(arr, function(k,v) {
  if (v > limit) {
    // set this specific value equal to limit
    // log changed value
  }
  console.log(v); // otherwise just log the value found
});

私はこれを試しましたが、何もしませんし、エラーもありません。

4

4 に答える 4

8

JSFIDDLE: http://jsfiddle.net/nsgch/8/

var arr = [3,4,5,6,7,9];
var limit = 5;

$.each(arr, function(k,v) {
  if (v > limit) {
       arr[k] = 'A'; 
  }
  console.log( arr[k] ); 
});
于 2013-06-02T10:28:39.363 に答える
2

「この特定の値を制限に設定する」方法によって異なります。あなたがやっていたら;

$.each(arr, function(k,v) {
  if (v > limit) {
    v = "A";
    // log changed value
  }
  console.log(v); // otherwise just log the value found
});

v要素ではなく、ローカル変数のみを変更していましたarr[k]@san.chez answerarr[k]のように更新するか、 ;を使用できます。$.map

var filtered = $.map(arr, function(v,k) {
  if (v > limit) {
    return "A";
  }

  return v;
});

...その後filtered、配列[1,2,4,A,A]になり、arr変更されません。kvパラメータの交換に注意してください。jQueryはそのように一貫しています/皮肉


また、両方のコード サンプルで終了が欠落していることにも注意してください}

于 2013-06-02T10:31:02.030 に答える
1
var arr = [3,4,5,6,7,9];
arr=arr.map(function(elem){ return elem>5?"A":elem; });
arr.forEach(function(elem){
    console.log(elem);
})

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

于 2013-06-02T10:33:35.750 に答える