1. 程式人生 > >js計算1-10000中出現的0 的次數(涉及到map,fill,filter,test,reduce方法)

js計算1-10000中出現的0 的次數(涉及到map,fill,filter,test,reduce方法)

js計算1-10000中出現的0 的次數

new Array(10000).fill('').map((_, index) => index + 1).filter(item => /0/.test(item)).reduce((count, item) => { return count + (String(item).match(/0/g) || []).length}, 0)
  • 詳解:
    1..fill()方法:es語法,填充陣列
    • 用法:
arr.fill(value, start, end)
value:填充值。
start:填充起始位置,可以省略。
end:填充結束位置,可以省略,實際結束位置是end-1。
例子:
const arr3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
arr3.fill(7, 2, 5)
console.log('%s', arr3)
結果:
1,2,7,7,7,6,7,8,9,10,11

所以 new Array(10000).fill('').map((_, index) => index + 1)實現了建立一個1-10000的陣列集合

  1. .filter()方法:es6語法, 過濾陣列
    例子1: 建立一個數組,判斷陣列中是否存在某個值
var newarr = [
  { num: 1, val: 'ceshi', flag: 'aa' },
  { num: 2, val: 'ceshi2', flag: 'aa2'  }
]
console.log(newarr.filter(item => item.num===2 ))

例子2: 去掉空陣列空字串、undefined、null

var arr = ['1','2',undefined, '3.jpg',undefined]
var newArr = arr.filter(item => item)
console.log(newArr)

例子三: 去掉陣列中不符合項

var arr = [20,30,50, 96,50]
var newArr = arr.filter(item => item>40)  
console.log(newArr)

例子四:過濾不符合項

var arr = ['10','12','23','44','42']
var newArr = arr.filter(item => item.indexOf('2')<0) 
console.log(newArr)

例子五: 陣列去重

var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2];
var arr2 = arr.filter((x, index,self)=>self.indexOf(x)===index)  
console.log(arr2); //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]

所以new Array(10000).fill('').map((_, index) => index + 1).filter(item => /0/.test(item)))篩選出了所有帶0的數字
3. .test() 方法: 用於檢測一個字串是否匹配某個模式,返回true或false.

var str = "Visit W3School";
var patt1 = new RegExp("W3School");
var result = patt1.test(str);
document.write("Result: " + result);
//輸出: Result: true
  1. .reduce() 歸併方法(累加器)
    用法: reduce(callback,initiaValue)會傳入兩個變數,回撥函式(callback)和初始值(initiaValue)。
    假設函式有個傳入引數,prev和next,index和array。 Prev和next是你必須要了解的。
    當沒有傳入初始值時,prev是從陣列中第一個元素開始的,next是第二個函式。
    但是當傳入初始值(initiaValue)後,第一個prev將是initivalValue,next將是陣列中的第一個元素

例子1: 計算陣列總和

var num = [1,2,3,4,5];
var res = num.reduce(function(total,num){
    return total+num;
    //return total + Math.round(num);//對陣列元素四捨五入並計算總和
});
console.log(res);//15

例子2: 合併二維陣列

var red = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
 return a.concat(b);
}, []);  //[]這個為初始值
console.log(red)
結果: [0, 1, 2, 3, 4, 5]