和数组相关的一些操做

首先给你们展现一下数组有哪些经常使用的方法算法

  • 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 reducebash

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
复制代码

3.排序和搜索

reverse sort indexOf lastIndexOfcode

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数据结构与算法》

相关文章
相关标签/搜索