js計算1-10000中出現的0 的次數(涉及到map,fill,filter,test,reduce方法)
阿新 • • 發佈:2018-12-21
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的陣列集合
.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
.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]