在javascript中满足条件时更改数组值

在javascript中满足条件时更改数组值,javascript,jquery,arrays,loops,Javascript,Jquery,Arrays,Loops,假设我有一个数组var arr=[3,4,5,6,7,9]和我记录的内容如下: $.each(arr, function(k, v) { console.log(v); } $.each(arr, function(k,v) { if (v > limit) { // set this specific value equal to limit // log changed value } console.log(v); // otherwise just

假设我有一个数组
var arr=[3,4,5,6,7,9]和我记录的内容如下:

$.each(arr, function(k, v) {
  console.log(v);
}
$.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
});
当我记录内容时,我想检查当前值是否大于例如
var limit=5

如果当前值大于
limit
我想替换/更改该值,比如字母
A
,并将其打印出来。所以我记录的
arr
数组看起来像这样
3,4,5,A,A,A

我在想这样的事情:

$.each(arr, function(k, v) {
  console.log(v);
}
$.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
});
我试过了,但没有任何效果,也没有错误。

jsiddle:


这取决于您如何执行“将此特定值设置为限制”。如果你在做

$.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]
,也可以使用

。。。然后,过滤后的
将是您的数组
[1,2,4,A,A]
,而
arr
将保持不变。注意
k
v
参数的交换;jQuery就是这样的/讽刺的


还要注意,两个代码示例都缺少结束符
}

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);
})

您可以简单地编写这样的内容来处理这些场景

想象一下你有:

const arr = [0, 1, 6, 12, 0, 78];
使用类似于:

arr.map(a => a === 0 ? "a" :a);
结果将是:

["a", 1, 6, 12, "a", 78];

你的代码看起来不错。除了缺少一个右括号。而第一个代码段缺少一个右括号。还要注意的是,根据您的注释,您将打印每个修改的值两次。值得注意的是,
Array.prototype.map
是一种ES5方法,而不是跨浏览器;可以添加以确保对旧浏览器的支持据我所知,我发布的链接中有一个兼容性信息。如果你有一个旧的浏览器,你可以免费下载一个新的:)我知道你发布的链接中有一个兼容性部分(我链接到该部分的链接的垫片!),但是对于没有点击你链接的驾车者来说,重要的是要注意。