我有一个简单的数组:
var c = [4,5,6,7,8,9,10,11,12];
我正在遍历数组以尝试返回符合条件的值:
$.each(c, function() {
// I need to pass each value from the array as the
// last argument in the function below
var p = get_shutter_price( width, height, c );
if ( p > 0 ) {
// Return the value from the array which allowed the condition to be met
console.log( c );
}
});
这不能按预期工作,因为整个数组都被传递给函数。
如何从允许满足条件的数组返回值?
例如,如果数组中的数字 8 是返回价格大于 0 的数字,则返回 8 。< / p>
答案 0 :(得分:2)
如果您希望c
符合条件的所有值,只需filter
var c = [4,5,6,7,8,9,10,11,12];
var conditionsMet = c.filter(function (value) {
return 0 < get_shutter_price(width, height, value);
});
然后conditionsMet[0]
成为第一个满足条件的人。
答案 1 :(得分:1)
据我所知,你需要array.prototype.filter
方法根据条件过滤你的数组。
var b = c.filter(function(val) {
return val > 0;
});
在你的情况下只是把你的条件这样:
var b = c.filter(function(val) {
return get_shutter_price( width, height, val ) > 0;
});
它会返回一个具有这种情况的新数组。
答案 2 :(得分:0)
根据the docs,你可以在回调函数中使用两个参数,第一个是你要迭代的项的索引,第二个是项的值。
$.each(c, function(index, val) {
// I need to pass each value from the array as the
// last argument in the function below
var p = get_shutter_price( width, height, val );
if ( p > 0 ) {
// Return the value from the array which allowed the condition to be met
console.log( c=val );
}
});
答案 3 :(得分:0)
使用this
代替c
来传递当前的迭代值,并且在使用c
时传递整个数组是100%正确的,因此请使用{{1传递正在迭代的当前项 -
this
答案 4 :(得分:0)
jQuery.each(c, function(index, item) {
// do something with `item`
});
在您的代码中,您错过了将index和item作为参数传递给函数(此处索引是可选的)