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]。您可以arr[k]@san.chez answer一样更新,也可以使用$.map;

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

  return v;
});

...然后filtered将是您的数组[1,2,4,A,A],并且arr将保持不变。k注意和v参数的交换;jQuery 就是这样一致的/sarcasm


另请注意,您的两个代码示例都缺少关闭的}.

于 2013-06-02T10:31:02.030 回答
2

你可以简单地写这样的东西来处理这些场景......

想象一下你有:

const arr = [0, 1, 6, 12, 0, 78];

使用类似的东西:

arr.map(a => a === 0 ? "a" :a);

结果将是:

["a", 1, 6, 12, "a", 78];
于 2019-07-03T16:04:47.520 回答
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 回答