有一个仅包含字符串的嵌套names
数组,需要循环查找每个字符串出现多少次。由于两个元素都有“ bob”,因此结果函数应该返回2。即使嵌套了数组,如何搜索字符串?
var names = ["bob", ["steve", "michael", "bob", "chris"]];
function loop(){
/* .... */
}
var result = loop(names, "bob");
console.log(result); // 2
答案 0 :(得分:2)
示例
var names = ["bob", ["steve", "michael", "bob", "chris"]];
function loop(names, searchString){
var flattenArray = names.flat(Infinity);
return flattenArray.filter(n => n === searchString).length;
}
var result = loop(names, "bob");
console.log(result); // 2
答案 1 :(得分:1)
您可以flatten和filter数组,然后只返回过滤后的数组的长度。
const names = ["bob", ["steve", "michael", "bob", "chris"]];
function loop ( arr, name ) {
return arr.flat( Infinity ).filter( el => el === name ).length;
}
const result = loop(names, "bob");
console.log(result); // 2
答案 2 :(得分:1)
您可以使用flatMap
var names = ["bob", ["steve", "michael", "bob", "chris"]];
console.log(names.flatMap(el => el === "bob").length)
答案 3 :(得分:0)
您也可以简单地迭代并确定这种方式:
var names = ["bob", ["steve", "michael", "bob", "chris"]];
var result = 0;
function loop(names,searchElement){
for (var el=0;el<names.length;el++){
if(Array.isArray(names[el])){
for(var elem=0;elem<names[el].length;elem++){
if(names[elem]==searchElement){
result = result + 1;
}
}
}
else{
if(names[el]==searchElement){
result = result + 1;
}
}
}
return result;
}
var results = loop(names, "bob");
console.log(result);