ES5扩展的方法
indexOf() 返回指定元素第一次出现的位置
lastIndexOf() 返回指定元素最后一次出现的位置
forEach() 遍历数组
// 定义数组
var nameList = ['欧阳姥姥', '司马姥姥', '独孤姥姥', '令狐姥姥', '东方姥姥', '西门姥姥', '诸葛姥姥'];
var user = {name: '张飞', age: 44, address: '河北'};
var users = [
{name: '曹操', age: 67, address: '许昌'},
{name: '刘备', age: 47, address: '成都'},
{name: '孙权', age: 37, address: '南京'},
{name: '吕布', age: 51, address: '包头'},
{name: '赵云', age: 46, address: '石家庄'},
user,
{name: '诸葛亮', age: 53, address: '南阳'}
];
console.log(nameList.indexOf('独孤姥姥'));
console.log(nameList.lastIndexOf('独孤姥姥'));
console.log(users.lastIndexOf(user)); // 5
console.log('');
console.log('');
// 遍历数组
users.forEach(function(item, index) {
console.log(item, index);
});
console.log('');
console.log('');
// **filter** 从原数组中过滤出复合条件的元素,组成新数组并返回
// 找出50岁以上的用户,组成新数组,发福利
var users01 = users.filter(function(item,index){
return item.age >= 50;
});
console.log(users01);
console.log('');
console.log('');
// map 从原数组中提取信息作为新数组的元素并返回,新数组元素个数与原元素一致
// 回调函数每次调用的返回值作为新数组的元素
// 提取每个用户的名字,组成新数组
var users02 = users.map(function(item, index) {
return item.name;
});
console.log(users02);
// 让每个用户的年龄 +2
var users03 = users.map(function(item) {
item.age += 2;
return item;
});
console.log(users03);
console.log('');
console.log('');
// every() 返回值是布尔值
// 如果每个回调函数的返回值都是true,最终结果就是true; 一旦有一个回调函数没有返回true,最终结果就是false
// 判断是否所有的用户都是成年人
var res1 = users.every(function(item, index){
return item.age >= 18;
});
console.log(res1);
console.log('');
// some() 返回值是布尔值
// 只要有一个回调函数返回true,最终结果就是true;
// 判断用户中有没有石家庄的
var res2 = users.some(function(item, index){
return item.address === '石家庄';
});
console.log(res2);
console.log('');
console.log('');
// reduce()
// 最后一个回调的返回值作为 reduce 的返回值
// 计算所有用户的年龄和
var res3 = users.reduce(function(prev, item, index){
return prev + item.age;
}, 0);
console.log('所有用户的年龄和:', res3);
console.log('');
// reduceRight()
users.reduceRight(function(prev, item, index) {
console.log(prev, item, index);
}, 0);
ES6数组扩展的方法
// ES6对于数组方法的扩展(重要使用的)
//1.Array.from() 可以把伪数组转成数组
//2.flat() 数组扁平化,可以把数组降维,默认值为1,括号中可以写数组指定降几维
// 3.includes() 判断数组里面是否包含某个值
// 使用少的扩展)
// 4.Array.of() 创建一个数组
// 5.find()和findIndex()
//find():会查找符合条件的第一个元素
//findIndex():查找符合条件的第一个元素的索引值
// at() 获取数组的值
// fill() 填充数组里面的键值
//arr.fill("填充的内容","开始填充的索引","结束填充的索引值")顾头不顾尾
//1.将伪数组转换成数组两种方法:Array.from()和扩展运算符
function fn(){
// ES5获取元素的方法通过arguments伪数组方法
console.log(arguments)
// ES6中的展开运算符
let arr = [...arguments]
console.log(arr)
// ES6新增加的数组方法
let arr1 = Array.from(arguments)
console.log(arr1)
// Array和扩展运算符都可以将伪数组转换成数组
}
fn(1,2,3,4,5,6,7,87654)
//2.flat()将数组扁平化
let arr = [1,2,[3,4,[5,6,[7,8,[9,0]]]]]
//方法一:通过ES5中字符串拼接
let str = arr.toString()
console.log(str)
var newArr = str.split(',')
console.log(newArr)
//方法二:通过ES6中方法拓展数组的扁平化
let newArr1 = arr.flat(4) //括号内默认值是1,括号内的数字可以将数组扁平化几维度
console.log(newArr1)
//3.通过includes()方法判断数组中是否含有某个元素
let arr = ['张三','李四','王五']
// 方法一:使用ES5中的indexOf()判断数组中是否含有某个值,如果含有某个值那么就返回该值的索引号,如果没有值返回的就是-1
let res = arr.indexOf('王五')
console.log(res)
// 方法二:使用ES6中的including(),判断数组中是否含有某个值,如果含有某个值那么就返回true,不含有就返回false
let estimate = arr.includes('张三')
console.log(estimate)
//4.通过构造函数的形式创建一个含有一个数字的数组
let arr = Array.of(7)
console.log(arr)
// 5.通过find()和findIndex()
//find()会查找符合条件的第一个元素
//findIndex()会查找符合条件的第一个元素的索引值
let arr = ['张三','李四','王五']
let res = arr.find(function(item){
return item == '李四'
})
console.log(res)
let arr1 = [2,5,7,9,22]
let res1 = arr1.find(item => item == 22)
console.log(res1) //返回的是查找到的元素返回出来返回单个值
let res2 = arr1.findIndex(item => item ==22)
console.log(res2) //返回是查找到对应的元素的索引数
//6.获取数组的值at()
let arr = [1,2,3,4,5,6]
let res = arr.at(2) //括号中写索引数
console.log(res)
//7.fill()填充数组里面的键值
let arr = [1,2,3,4,5,6,7]
//let res = arr.fill('a') // ['a', 'a', 'a', 'a', 'a', 'a', 'a']
let res = arr.fill('a',4,6) // [1, 2, 3, 4, 'a', 'a', 7]
console.log(res)