counting how many times an item appears in a multidimensional array in javascript

后端 未结 4 943
南笙
南笙 2021-01-27 03:35

Given a multidimensional array like this:

 var arr = [
\"apple\",
[\"banana\", \"strawberry\",\"dsffsd\", \"apple\"],
\"banana\",
[\"sdfdsf\",\"apple\",[\"apple\         


        
4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-27 04:02

    You could iterate the flat version of arr using arr.toString().split(",") so you don't need recursion.

    var arr =  [
        "apple",
        ["banana", "strawberry","dsffsd", "apple"],
        "banana",
        ["sdfdsf","apple",["apple",["nonapple", "apple",["apple"]]]]
        ,"apple"];
    
    
    var counts = {};
    
    
     arr.toString().split(",").forEach(e=>{
        counts[e] = (counts[e] || 0) +1
     })   
    
     console.log(counts.apple)

    Doesn't work if elements have "," inside, but works with.flat() instead of .toString().split(",")

提交回复
热议问题