Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery map()比较布尔值_Javascript_Jquery - Fatal编程技术网

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

Javascript 如何使用jQuery map()比较布尔值,javascript,jquery,Javascript,Jquery,我将jQuery选择器作为一个参数和一个年份值传递给一个函数,以根据我的select(jQuery选择器参数)中所有值的数组测试该值。如果任何选项值与“value”参数相同,但它总是返回未定义的值,我需要它返回布尔true function checkOptions(selector, prop) { var options = selector.children('option'); var selectorValues = $.m

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

 function checkOptions(selector, prop) {      
            var options = selector.children('option');
            var selectorValues = $.map(options, function(option) {
               if( option.value == prop ){
                    return !!(option.value == prop);
               }     
            });
        }
function checkOptions(selector, prop) { 
        var result;
        var options = selector.children('option');
        var selectorValues = $.map(options, function(option) {
                return option.value == prop;
        });
    }
在更改我的原始代码以反映所提出的建议之后,该函数仍然返回“undefined”

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

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

这是有道理的,因为我正在通过一个“年”来支持选择选项的值之一。

在这种情况下,映射函数没有正确使用,这就是您遇到麻烦的原因。它的作用是为数组的每个元素应用转换。看看这本书。这是一个预定义的javascript函数,它完全满足您的需要

我将获取jquery对象的“数组”,将它们转换为一个本机javascript数组,并在其上调用some方法来检查所需的条件

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

好吧,假设
如果
条件从未通过,那么您永远不会得到
返回
,因此您只能得到
未定义的
。如果只想返回所有布尔值,可以删除
If
。您还可以删除
因为该检查已返回boolean@vlaz,如果所有返回都未定义,map不应该返回空数组吗?@valarauko不,你为什么这么认为?
.map
功能提供了一个值到另一个值的映射,这也许并不奇怪。因此,一个包含N个值的数组将生成一个包含N个值的新数组,这些值遵循映射。或者换句话说,如果从
[1,2,3]
开始,映射为
x*2
,将针对每个值执行,新数组将为
[2,4,6]
。您无法使用此参数创建空数组—它始终是1:1。您可能正在考虑使用
.filter
,它接受一个谓词并返回通过它的任何内容。等等,是否希望
检查选项
返回一个值?如果是这样,它当前没有
return
语句,因此它不会返回任何内容-同样,这会导致数组映射函数上的
undefined
@vlaz,正如在本机javascript上实现的那样,但是根据jQuery.map文档,您可以返回null或undefined以删除该项(我不知道他们为什么那样实施)这里是链接