var arr = [];
for(let i = 65; i < 91; i++) {
arr.push(String.fromCharCode(i)) //String.fromCharCode(i) 26个字母
console.log()
}
//1.map重点在于原有的数据上进行加工,返回新数组,构建新元素。
//map在一个有26个连续空间的数组的过程当中是不会执行的,map不仅仅要拿length 还会拿item,如果item为空的时候就不会执行。
arr = arr.map(function(item, index, arr) {
//操作返回的每一个元素
return '纸牌' + item
})
//2.arr.foreach
//1. 必定执行完毕 (要考虑性能)
//2.在考慮性能的前提下,或者数组会改变的前提下就不要使用foreach,就还是老实使用for比较好。
//3.async await里面有坑,还是用for循环比较好。
arr.forEach(function(item, index, arr) {
//建议不要修改原来的数组
console.log('item', item, 'index', index, 'arr', arr)
})
//3.filter 过滤 根据函数参数返回的布尔值,来决定当前元素是否在新数组中存在。
let newArr = arr.filter(function(item, index, arr) {
if(index > 20) {
return true;
} else {
return false;
}
// return true;//留下,不涉及到新的元素内容变更
})
console.log(newArr)
//4.every 每一个兄弟都是
var arr2 = [];
for(let i = 65; i < 91; i++) {
arr2.push({
k: String.fromCharCode(i),
isLeave: false
}) //String.fromCharCode(i) 26个字母
console.log()
}
arr2[20].isLeave = false;
let allover = arr2.every(function(item, index, arr) {
return item.isLeave === true; //全部都为true
})
5.let someone = arr2.some(function(item, index, arr) {
return item.isLeave === true; //一个为true 结果就为true 否则就为false
})
console.log(allover, 'allover')
console.log(someone, 'someone')
//总结:数组.every 是否全部都 some.是否一个
//6.reduce 相当于求和
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 344, 3];
let sum = nums.reduce(function(total, n) {
console.log(n)
return total + n; //下一轮的形参total,初始是reduce的第二个参数0
}, 0)
console.log('sum:', sum)