Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第 03 题:统计数组中某个值的个数 #3

Open
doubleyao5753 opened this issue Jul 23, 2019 · 3 comments
Open

第 03 题:统计数组中某个值的个数 #3

doubleyao5753 opened this issue Jul 23, 2019 · 3 comments

Comments

@doubleyao5753
Copy link
Owner

普通的垃圾解法 - for遍历

function count(arr, item) {
    var time = 0;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] === item) {
            time++;
        }
    }
    return time
}
@doubleyao5753
Copy link
Owner Author

Plan B:forEach()

foreach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

//  语法:(一般括号内只用一个function(currentValue))
array.forEach(function(currentValue, index, arr), thisValue)

解法:

// Plan B: forEach()
function count2(arr,item) {
    var time = 0 ;
    arr.forEach(function(ele){
        ele === item? time++ : 0
        // ele 就是数组中的每一个数值
    })
    return time
}

@doubleyao5753
Copy link
Owner Author

Plan C :filter() - 最优解法

filter(fn)返回数组中满足fn函数中条件的集合(产生新数组)

//  语法:(一般括号内只用一个function(currentValue),要注意函数体内要有 return)
array.filter(function(currentValue,index,arr), thisValue)

解法:

// Plan C:filter()
function count3(arr,item) {
    var newArr = arr.filter(function(a) {
        return a === item
        // return 一定不能掉,返回与return之后符合条件的数的集合
    })
    return newArr.length
}

@doubleyao5753
Copy link
Owner Author

Plan D :map()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
语法与filter() 一样。
map()-->对数组中的每一项进行给定函数,返回每次函数调用的结果组成的数组;

数组的filter() 方法与map() 方法的区别

  • map将返回值组装成一个数组
  • filter返回的也是一个数组,但是返回的数组结构与原数组结构一致,可以说返回的数组是基于原数组的
    见简书某博客

解法:

// Plan D: map()
function count4(arr, item) {
    var time = 0
    //map()-->对数组中的每一项进行给定函数,
    //返回每次函数调用的结果组成的数组;
    //在这里可以不用这个新数组,可以没有return没有返回值
    arr.map(function (a) {
        if (a === item) {
            time++
        }
    })
    return time
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant