找到数组中的字符串匹配数组在JavaScript中?
问题描述:
我需要找到数组b
中的字符串数,它包含在数组arr
中。我得到了输出,但我需要这个顺序。 [[3,6,0],[1,3,1]]
这里我的代码去。找到数组中的字符串匹配数组在JavaScript中?
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]]
实际输出:[[3,1],[6,3],[0,1]]
预期输出:[[3,6,0],[1,3,1]]
我想要的结果无论是在JavaScript或jQuery的。
答
正如你在b
数10
你需要将其转换为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++) { \t
count = 0;
\t key = String(b[j]);
count = arr[i].filter(function (el) {
\t return el.slice(0, 2) === key;
}).length;
counts.push(count);
}
result.push(counts);
counts = [];
}
console.log(JSON.stringify(result));
版本为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++) { \t
count = 0;
\t key = String(b[j]);
for (k = 0; k < arr[i].length; k++) {
if (arr[i][k].slice(0, 2) === key) {
\t count++;
}
}
counts.push(count);
}
result.push(counts);
counts = [];
}
console.log(JSON.stringify(result));
+0
谢谢@Alexander完美的解决方案。 – htoniv
答
似乎在您的示例输入中有一些错字。以下代码可能会有帮助
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));
或者
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));
+0
谢谢你gilsha – htoniv
无法理解的逻辑,什么是'[ 3,6,0]'和'[1,3,1]'代表? – Saar
'arr [0]'包含3'00','01'为6和'10'与0相同'arr [1]' – htoniv
现在有任何疑问@Saar – htoniv