如何计算嵌套数组中的字符串?

时间:2019-06-20 20:41:48

标签: javascript

有一个仅包含字符串的嵌套names数组,需要循环查找每个字符串出现多少次。由于两个元素都有“ bob”,因此结果函数应该返回2。即使嵌套了数组,如何搜索字符串?

var names = ["bob", ["steve", "michael", "bob", "chris"]];

function loop(){ 
    /* .... */
}

var result = loop(names, "bob");
console.log(result); // 2

4 个答案:

答案 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)

您可以flattenfilter数组,然后只返回过滤后的数组的长度。

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);