假设我有一个数组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
});
我试过这个,但它什么也没做,也没有错误。
答案 0 :(得分: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] );
});
答案 1 :(得分: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 answer中一样更新arr[k]
,也可以使用$.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
另请注意,您的两个代码示例都缺少结束}
。
答案 2 :(得分: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
答案 3 :(得分:0)
您可以像这样写一些东西来处理这些情况...
想象你有:
const arr = [0, 1, 6, 12, 0, 78];
使用类似的东西:
arr.map(a => a === 0 ? "a" :a);
结果将是:
["a", 1, 6, 12, "a", 78];