简体   繁体   English

在javascript中查找从数组到数组的字符串匹配数?

[英]find number of string matches from array to array in javascript?

I need to find number of strings in array b that contains in array arr . 我需要在数组b中找到包含在数组arr的字符串数。 I got the output but i need it in this order. 我得到了输出,但我按此顺序需要它。 [[3,6,0],[1,3,1]]
here my code goes. 我的代码在这里。

var arr = [["00","00","00","01","01","01","01","01","01"],["000","100","01","01","01"]];
var b = ["00","01",10];
var cc = [];
for (var i=0;i<b.length;i++) {
    var k = [];
    for (var y=0;y<arr.length;y++) {
        var a = 0;
        for (var x=0;x<arr[y].length;x++) {
            if ((arr[y][x].substring(0,2)).indexOf(b[i]) != -1) {
                a++;
            }
        }
        k.push(a)
    }
    cc.push(k);
}
console.log(JSON.stringify(cc));// output :[[3,1],[6,3],[0,1]]

Actual output : [[3,1],[6,3],[0,1]] 实际产出: [[3,1],[6,3],[0,1]]
Expected output : [[3,6,0],[1,3,1]] 预期产出: [[3,6,0],[1,3,1]]
I want the result either in javascript or jquery. 我想在javascript或jquery中得到结果。

As you have in b number 10 you need convert it to String and then search in array, because arr contains only strings 正如你在b10所做的那样,你需要将它转换为String然后在数组中搜索,因为arr只包含字符串

 var arr = [ ["00","00","00","01","01","01","01","01","01"], ["000","100","01","01","01"] ]; var b = ["00", "01", 10]; var len, i, j, key, result = [], counts = [], count = 0; for (i = 0, len = arr.length; i < len; i++) { for (j = 0; j < b.length; j++) { count = 0; key = String(b[j]); count = arr[i].filter(function (el) { return el.slice(0, 2) === key; }).length; counts.push(count); } result.push(counts); counts = []; } console.log(JSON.stringify(result)); 

Version for IE < 9 , where there is not .filter method IE < 9 ,其中没有.filter方法

 var arr = [ ["00","00","00","01","01","01","01","01","01"], ["000","100","01","01","01"] ]; var b = ["00", "01", 10]; var len, key, result = [], counts = [], i, j, k, count; for (i = 0, len = arr.length; i < len; i++) { for (j = 0; j < b.length; j++) { count = 0; key = String(b[j]); for (k = 0; k < arr[i].length; k++) { if (arr[i][k].slice(0, 2) === key) { count++; } } counts.push(count); } result.push(counts); counts = []; } console.log(JSON.stringify(result)); 

Seems like there are some typo in your sample input. 好像你的样本输入中有一些拼写错误。 Following code may help. 以下代码可能有所帮助

 var arr = [["00","00","00","01","01","01","01","01","01"],["00","10","01","01","01"]]; var b = ["00","01","10"]; var cc = []; arr.forEach(function(ar,i){ cc[i] = []; b.forEach(function(a,j){ cc[i][j] = ar.filter(function(d){ return d==a }).length; }); }); alert(JSON.stringify(cc)); 

Or 要么

 var arr = [ ["00", "00", "00", "01", "01", "01", "01", "01", "01"], ["00", "10", "01", "01", "01"] ]; var b = ["00", "01", "10"]; var cc = arr.map(function(ar) { return b.map(function(a) { return ar.filter(function(d) { return d == a }).length; }) }); alert(JSON.stringify(cc)); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM