首先给你们展现一下数组有哪些经常使用的方法算法
链接两个或更多数组,并返回结果
对数组中的每一项运行给定函数,若是该函数对每一项都返回true,则返回true
对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
对数组中的每一项运行给定函数。这个方法没有返回值
将全部的数组元素链接成一个字符串
返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1
返回在数组中搜索到的与给定参数相等的元素的索引里最大的值
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
颠倒数组中元素的顺序,原先第一个元素如今变成最后一个,一样原先的最后一个元素变成了如今的第一个
对数组中的每一项运行给定函数,若是任一项返回true,则返回true
按照字母顺序对数组排序,支持传入指定排序方法的函数做为参数
将数组做为字符串返回
和toString相似,将数组做为字符串返回
经常使用于对数组求和
传入索引值,将数组里对应索引范围内的元素做为新数组返回
插入或者删除 (修改数组自己)
下面进行详细讲解数组
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"]
复制代码
every some forEach map filter reduce
bash
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讲解ui
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讲解spa
//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
复制代码
reverse sort indexOf lastIndexOf
code
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 返回参数匹配的最后一个元素的索引
复制代码
··································································································································
遍历对象的方法
//返回一个数组,包含对象自身的全部属性(不含Symbol属性,可是包括不可枚举属性).
var obj = {'0':'a','1':'b','2':'c'};
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key,obj[key]);
});
复制代码
//循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
var obj = {'0':'a','1':'b','2':'c'};
for(var i in obj) {
console.log(i,":",obj[i]);
}
复制代码
//返回一个数组,包括对象自身的(不含继承的)全部可枚举属性(不含Symbol属性).
var obj = {'0':'a','1':'b','2':'c'};
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]);
});
复制代码
学习笔记:参考《学习Iavascript数据结构与算法》