如何使用jQuery map()比较布尔值

时间:2016-09-21 17:06:52

标签: javascript jquery

我将jQuery选择器作为参数和年份值传递给函数,以针对来自select(jQuery选择器参数)的所有值的数组测试值。如果任何选项值与“value”参数相同,我需要它返回一个布尔值true,但它总是返回undefined。

 function checkOptions(selector, prop) {      
            var options = selector.children('option');
            var selectorValues = $.map(options, function(option) {
               if( option.value == prop ){
                    return !!(option.value == prop);
               }     
            });
        }

更改原始代码以反映所做的建议后,该函数仍会返回“undefined”。

function checkOptions(selector, prop) { 
        var result;
        var options = selector.children('option');
        var selectorValues = $.map(options, function(option) {
                return option.value == prop;
        });
    }

变量“selectorValues”在运行时保存这些值:

selectorValues = [false, false, true, false, false]

这是有道理的,因为我将“年”传递给道具,这是选择选项的价值之一。

1 个答案:

答案 0 :(得分:1)

在这种情况下,地图功能没有正确使用,这就是你遇到麻烦的原因。它的作用是为数组的每个元素应用转换。查看some function。它是一个预定义的javascript函数,可以完全满足您的需求。

我会使用jquery对象的“数组”,将它们转换为本机javascript数组,然后调用它们上的某个方法来检查所需的条件。

function checkOptions(selector, prop) {
  var options = selector.find('option').toArray();
  var result = options.some(function(currentValue) {
    return (currentValue.text == prop); //using type coercion
  });
  return result;
}