Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
如何使用jQuery在JavaScript数组中搜索字符串?_Javascript_Jquery_Arrays - Fatal编程技术网

如何使用jQuery在JavaScript数组中搜索字符串?

如何使用jQuery在JavaScript数组中搜索字符串?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个JavaScript数组: var j_array = new Array(); j_arry=["class:1","division:a","class:5","class:3","division:b","division:c","division:d","class:10"]; 我需要找到类的出现次数及其数组键,因此我使用: found = $.inArray('class', j_array); ` But it returns `-1`; 然后我使用: var searc

我有一个JavaScript数组:

var j_array = new Array();
j_arry=["class:1","division:a","class:5","class:3","division:b","division:c","division:d","class:10"];
我需要找到类的出现次数及其数组键,因此我使用:

found = $.inArray('class', j_array); ` But it returns `-1`;
然后我使用:

var search = 'class';
$.each([j_array], function(index, value){
    $.each(value, function(key, cell){
        if (search.indexOf(cell) !== -1)
            console.log('found in array '+index, cell);
    });
});
但这也是错误的。我如何解决这个问题

从这个数组中,我想得到以下内容:

  • 按0、2、3和7键上课4次

  • 我只想做一个单独的类数组,也就是

    new_array = ["class:1", "class:2", "class:3", "class:10"];
    
  • 目前在
    j_数组中有四个类
    。如何获取第n个类的值

  • 也就是说,
    1st class value=“class:1”
    2rd class value=“class:5”
    ,等等。

    用于过滤包含字符串类的数组元素-请参见下面的演示:

    var j_数组=[“类:1”、“类:a”、“类:5”、“类:3”、“类:b”、“类:c”、“类:d”、“类:10”];
    var result=j_array.filter(函数(e){
    返回e.indexOf('class')!=-1;
    });
    
    控制台日志(结果)您可以筛选在新数组中匹配的元素,并仅返回此新数组的长度
    var j_arry=[“1级”、“a级”、“5级”、“3级”、“b级”、“c级”、“d级”、“10级”];
    var res=j_arry.filter(x=>x.includes(“类”);
    var key=res.map(x=>x.split(“:”[1]);
    log(“类来了”+res.length+”,在“+key.join(“,”)键处);
    
    console.log(“new array=”,res)以下是您的问题1+2的答案。这也是证明,所以也回答了你的第三部分。这是通过老式的硬移植而不是时髦的功能实现的。原始数组条目将被拆分和过滤,如果符合条件,我们将使用指针数组(列表)存储在关联数组(结果)中,以便于给出排序结果并从关联数组中提取值。max变量可能不是必需的,但为了清楚起见,可能包含了它-可以使用list.length代替。请注意,list[]数组将是稀疏的(缺少步骤),因此我们在输出步骤中使用之前测试每个条目

    var j_array=new array();
    j_arry=[“1级”、“a级”、“5级”、“3级”、“b级”、“c级”、“d级”、“10级”、“1级”];
    变量a,结果=[],列表=[],最大值=-1
    对于(变量i=0;imax?a[1]:max;
    }
    }
    //说地点
    对于(变量i=0;iconsole.log(“New array=“+newArray.toString())
    您必须先执行
    map
    ,然后执行
    filter

    var j_数组=[“类:1”、“类:a”、“类:5”、“类:3”、“类:b”、“类:c”、“类:d”、“类:10”];
    var result=j_array.map(函数(e,i){
    返回e.indexOf('class')>-1?''+i:false;
    }).过滤器(功能(e){
    返回!!e;
    });
    
    控制台日志(结果)在这里,单个reduce就足够了

    var arr=[“1级”、“a级”、“5级”、“3级”、“b级”、“c级”、“d级”、“10级”],
    res=arr.reduce((p,c)=>c.includes(“类”)?(p.count++,p.keys.push(c.split(“:”[1]),p)
    :p,{计数:0,键:[]});
    
    控制台日志(res)
    您可以使用
    过滤器
    映射
    功能过滤数组,使其仅包含与文本
    'class'
    匹配的元素,并使用数组索引符号访问数组中的第n个元素。检查下面的代码片段,希望对您有所帮助

    下面的代码段使用ES6 arrow语法

    var arr=[“1级”、“a级”、“5级”、“3级”、“b级”、“c级”、“d级”、“10级”];
    var result=arr.filter(x=>x.indexOf('class')!=-1);
    var指数=result.map(x=>arr.indexOf(x));
    控制台日志(索引);
    控制台日志(结果);
    var nValue=window.prompt('entern value');
    
    console.log(结果[nValue])如果您正在使用jQuery支持一些非常旧的浏览器,但这些浏览器仍然没有实现新的数组函数,并且您不想因为已经在使用jQuery而多填充这些函数,那么您可以使用jQuery等价物:

    var arr = ["class:1", "division:a", "class:5", "class:3", "division:b", "division:c", "division:d", "class:10"]
    var result = $.grep(arr, function (x) { return x.indexOf('class') !== -1 })
    var indices = $.map(result, function (x) { return arr.indexOf(x) })
    

    这是与相同的代码,但使用jQuery。

    谢谢朋友。但我有三个问题。请你回答这3个单独的问题。问题(1)和(2)将从上面演示的
    结果中清楚地显示出来。。。对于(3)你可以做
    result[N]
    …没有朋友。实际上,您给出了问题2的答案,结果[N]基于新数组。但是我想要基于J_数组的结果[N]。我找不到第一个问题的答案。对于(1),需要像[0,2,3,7]这样的数组?是的。请在回答中更新此内容。此处不需要jQuery,请使用本机数组方法为什么需要嵌套循环?1。不要使用嵌套循环2。进行反向操作,例如
    item.indexOf(searchTerm)这个问题肯定太宽泛了,有很多可能的方法。