首先给大家展示一下数组有哪些常用的方法
- concat
连接两个或更多数组,并返回结果 - every
对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true - filter
对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组 - forEach
对数组中的每一项运行给定函数。这个方法没有返回值 - join
将所有的数组元素连接成一个字符串 - indexOf
返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1 - lastIndexOf
返回在数组中搜索到的与给定参数相等的元素的索引里最大的值 - map
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组 - reverse
颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在的第一个 - some
对数组中的每一项运行给定函数,如果任一项返回true,则返回true - sort
按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数 - toString
将数组作为字符串返回 - valueOf
和toString类似,将数组作为字符串返回 - reduce
常用于对数组求和 - slice
传入索引值,将数组里对应索引范围内的元素作为新数组返回 - splice() :
插入或者删除 (修改数组本身)
下面进行详细讲解
1.数组合并 concat
var arr1 = [1, 'e', 'r'];
var arr2 = [3, 9, 'r'];
var arr = ['w', 'q'];
var newArr = arr.concat(arr1, arr2)
console.log("arr:", arr); //arr: ["w", "q"]
console.log('newArr:', newArr); //newArr: ["w", "q", 1, "e", "r", 3, 9, "r"]
2.迭代器函数
every some forEach map filter reduce
every和some讲解
every 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true, 否则返回false
some 对数组中的每一项运行给定函数,如果任一项返回true,则返回true
every和some的区别
every:若有一项结果为false,则执行结束
some:若有一项为true, 则执行结束
//代码示例
//场景 判断数组中的值是否都为偶数
var isEven = function(x) {
console.log(x);
return (x % 2 == 0) ? true : false;
}
var numbers = [1, 2 ,3 ,4];
console.log("every:", numbers.every(isEven)); //第一个元素是1, 他不是2的倍数,因此isEven函数返回false,然后every执行结束。
console.log("---------------");
console.log("some:", numbers.some(isEven)); //第一个元素isEven返回false, 第二个元素isEven返回true————迭代结束,
/*
控制台输出为
1
every: false
---------------
1
2
some: true
*/
forEach,filter, map讲解
var arr = [1, 2 ,3 ,4, 5, 6];
arr.forEach(function(x) { //对数组中的每一项运行给定函数。这个方法没有返回值
console.log(2*x) //2, 4 ,6, 8, 10, 12
})
var newArr = arr.filter(function(x) { //对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
return x % 2 == 0
})
console.log(arr) //[1, 2, 3, 4, 5, 6]
console.log(newArr) //[2, 4, 6] 不改变原数组
var newArr = arr.map(function(x) {//对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
return x % 2 == 0
})
console.log(arr) // [1, 2, 3, 4, 5, 6]
console.log(newArr) //[false, true, false, true, false, true]
reduce讲解
//reduce 返回一个将被叠加到累加器的值, reduce方法停止执行后会返回这个累加器
var arr = [1, 2 ,3 ,4, 5, 6];
var result = arr.reduce(function(previous, current, index, arr) {
return previous + current;
})
console.log(result); //21
3.排序和搜索
reverse sort indexOf lastIndexOf
reverse sort讲解
//reverse
var arr = [1, 8, 3, 15, 25]
var reverse = arr.reverse(); //将数组反序 改变的是原数组
console.log(arr); [25, 15, 3, 8, 1]
console.log(reverse); [25, 15, 3, 8, 1]
var arr = [1, 8, 3, 15, 25];
var arr = [1, 8, 3, 15, 25]
arr.sort(function(a, b) { //sort 按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数
return a-b;
})
console.log(arr); //[1, 3, 8, 15, 25] 改变的是原数组
indexOf, lastIndexOf讲解
var arr = [1, 8, 1, 3, 1, 15, 25]
console.log(arr.indexOf(1)); //0 返回参数匹配的第一个元素的索引
console.log(arr.lastIndexOf(1));//4 返回参数匹配的最后一个元素的索引
··································································································································
遍历对象的方法
- 使用Object.getOwnPropertyNames(obj)遍历
//返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
var obj = {'0':'a','1':'b','2':'c'};
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key,obj[key]);
});
- 使用for..in..遍历
//循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
var obj = {'0':'a','1':'b','2':'c'};
for(var i in obj) {
console.log(i,":",obj[i]);
}
- 使用Object.keys()遍历
//返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
var obj = {'0':'a','1':'b','2':'c'};
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]);
});
- Object.values()
- Object.entries()
学习笔记:参考《学习Iavascript数据结构与算法》