如何使用jQuery在JavaScript数组中搜索字符串?
我有一个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
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);
});
});
但这也是错误的。我如何解决这个问题
从这个数组中,我想得到以下内容:
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;i console.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)代码>这个问题肯定太宽泛了,有很多可能的方法。