满足条件时从数组中提取值

时间:2015-09-17 15:06:06

标签: javascript jquery arrays

我有一个简单的数组:

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>

5 个答案:

答案 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作为参数传递给函数(此处索引是可选的)