数组方法总结

 

上周没事的时候把自己对数组方面的理解做了一下总结,知识点不深,方便以后的查阅。

1.对象继承方法

// 对象继承方法toString() toLocalString() valueOf()
//toString()返回的结果是去掉数组两边的"[" "]",toLocalString()和前者相同,而valueOf()返回的则是数组本身
var arr = [1,2,3]; console.log(arr.toString()) //1,2,3 console.log(arr.toLocaleString()) //1,2,3 console.log(arr.valueOf()) //[1,2,3]

2.数组转换方法

//数组转换方法
var arr = [1,2,3];
console.log(arr.join());//1,2,3
console.log(arr.join(""));//123
console.log(arr.join("-"));//1-2-3
console.log(arr.join(undefined));//1,2,3(如果参数是undefined,标准浏览器返回逗号隔开的内容,ie7返回的是undefined的内容)

3.栈和队列方法

// 栈和队列方法 pop() push() shift() unshift()
// 栈是一种LIFO last-in-first-out 后进先出的数据结构。也就是说最新添加的项最早被移除。
// 队列是一种FIFO first-in-first-out 先进先出。队列在列表的末端添加项,在列表的前端删除项。
// pop() push() shift() unshift() 都会改变数组的长度,因此会改变原始数组。
var a = [];
console.log(a,a.push(1));//[1],1
console.log(a,a.push('wbin'));//[1,'wbin'],2
var d = [];
console.log(d.shift()) //undefined

4.数组排序方法

// 数组排序方法 sort(),reverse()两个方法都会改变原始数组
var arr = [1,2,3,4,5];
console.log(arr.reverse())//数组反转
console.log(arr);//改变了原始数组
// sort() 如果包含undefined,则会把undefined放在最后面
var arr1 = [1,undefined,2,undefined,3];
arr1.sort()
console.log(arr1)//[1,2,3undefined,undefined];
// 数组里面有字符串和数字比较的时候,返回NaN,也就是false.所以会出现在数字前面
var arr2 = ['wbin',3,50,3];
arr2.sort(function(x,y){
    if(x<y){
        return -1
    }else if(x>y){
        return 1
    }else{
        return 0
    }
})
console.log(arr2)

可以利用sort()来随机排序一个数组

function compare(){
    return Math.random() - 0.5;
}
var h = [1,2,3,4,5];
console.log(h.sort(compare));

5.concat()

// concat()方法基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。所以,不影响原数组

        // 如果不提供参数,concat()方法返回当前数组的一个浅拷贝。也就是说如果数组成员包括复合类型(比如对象),则新数组拷贝的是该值得引用。
        var i = [1,2];
        var ii = i.concat();
        console.log(i,ii);
        i[0] = 0;
        console.log(i,ii)
        var j = [[1,2]];
        var jj = j.concat();
        console.log(j,jj);
        j[0][0] = "wbin";
        console.log(j,jj)

        var aa = {
            a:11
        }
        var bb = {
            b:22
        }
        var r = Array.prototype.concat.call(aa,bb)
        console.log(r)

6.reduce()

var arr1 = [1,32,3,4,5];
        // 求和
        var sum = arr1.reduce(function(x,y){
              return x+y
        })
        console.log(sum)//45
        // 带有原始数据的求和
        var sum1 = arr1.reduce(function(x,y){
            return x+y
        },-5)
        console.log(sum1)//40
        // 找出长度最长的数组元素
        var arr2 = ['aaa',1,222,3,'wbin'];
        var findLongest = arr2.reduce(function(pre,cur){
            return pre.length > cur.length ? pre :cur
        })
        console.log(findLongest)//wbin
        // 实现二维数组扁平化
        var matrix = [
            [1,2],
            [3,4],
            [5,6]
        ]
        var flatten = matrix.reduce(function(pre,cur){
            return pre.concat(cur)
        })  
        console.log(flatten)//[1,2,3,4,5,6]

7. 数组迭代方法,两个参数,一个是要在每一项上运行的函数和运行该函数的作用域对象

var arr2 = [1,2,3];
        var r2 = arr2.map(function(item,index,arr){
            return item*item
        })
        console.log(r2)//[1,4,9]
        var arr3 = ['a','b','c'];
        var r3 = [1,2].map(function(item,index,arr){
            return this[item]//只能写成这样的格式
        },arr3)
        console.log(r3)//['b','b']
        // 利用map方法获得对象数组中的特性属性值
        let arr4 = [
            {
                name:'qi_tian_da_sheng',
                email:'666@qq.com'
            },
            {
                name:'tian_peng_yuan_shuai',
                email:'888@qq.com'
            },
            {
                name:'wbin',
                email:'8888888@qq.com'
            }
        ]
        var r4 = arr4.map(function(item,index){
            return item.email
        })
        console.log(r4)//['666@qq.com','888@qq.com','8888888@qq.com']
        // 对字符串使用该方法,返回的是一个分开的数组
        var str = "abc";
        var r5 = Array.prototype.map.call(str,function(item,index){
            return item//这里可以写一些方法
        })

8.filter()

1        // filter()会跳过稀疏数组中缺少的元素,它的返回值总是稠密的
2         var arr6 = [1,,2,,,3,,,,,,4];
3         var r6 = arr6.filter(function(){
4             return true
5         })
6         console.log(r6)//[1,2,3,4]

9.some() 和 every()

        // some() 方法对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true
        var arr7 = [1,2,3];
        var r7 = arr7.some(function(ele){
            return ele%2 ===0
        })
        console.log(r7)//true
        // 空数组上调用some返回的是false
        console.log([].some(function(){}))//false
        // every()和some相反
 
 
改变原数组的方法有七种
四种栈和队列方法 unshift() shift() pop() push()
两个排序方法 reverse() sort()
一个删除方法 splice()

 

 

还遗漏一些其他的方法,以后补充。

 

转载于:https://www.cnblogs.com/chinabin1993/p/8045152.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript数组有很多内置方法,可以操作和处理数据。以下是JavaScript数组的所有方法列表: 1. `concat()` - 连接两个或多个数组。 2. `copyWithin()` - 在数组内部将一段元素拷贝到另一个位置。 3. `entries()` - 返回一个迭代器对象,可以遍历数组所有的键值对。 4. `every()` - 检查数组中的所有元素是否满足一个条件。 5. `fill()` - 用静态值填充一个数组中的所有元素。 6. `filter()` - 通过指定条件过滤出符合条件的数组元素。 7. `find()` - 返回找到的第一个元素,满足条件。 8. `findIndex()` - 返回目标元素索引,满足条件。 9. `forEach()` - 遍历数组,对每个元素执行指定的操作。 10. `includes()` - 判断数组是否包含指定元素。 11. `indexOf()` - 返回指定元素第一个出现的位置索引。 12. `join()` - 连接数组元素,返回字符串。 13. `keys()` - 返回一个迭代器对象,可以遍历数组的键。 14. `lastIndexOf()` - 返回指定元素最后一次出现的位置索引。 15. `map()` - 遍历数组,对每个元素执行指定的操作,将结果放入新数组。 16. `pop()` - 删除数组最后一个元素。 17. `push()` - 在数组末尾添加一个或多个元素。 18. `reduce()` - 对数组中的每个元素执行指定的操作,累积计算并返回最终结果。 19. `reduceRight()` - 与reduce()方法类似,不过是从右到左遍历数组。 20. `reverse()` - 反转数组元素的顺序。 21. `shift()` - 删除数组的第一个元素。 22. `slice()` - 截取数组元素,返回新数组。 23. `some()` - 检查数组中是否存在至少一个元素满足一个条件。 24. `sort()` - 排序数组元素。 25. `splice()` - 删除、插入或替换数组中的元素。 26. `toString()` - 将数组转换成字符串。 27. `unshift()` - 在数组的开头添加一个或多个元素。 28. `valueOf()` - 返回数组本身。 以上方法中,有些方法会改变原数组,有些方法则不会。需要注意使用时,避免产生错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值