JavaScript数据结构复习(篇1)数组

本文详细介绍了JavaScript中数组的创建方式、常用操作方法,包括添加、删除元素,以及数组的迭代、搜索、排序和转换等高级功能。通过具体示例,深入浅出地讲解了如何高效地使用数组。

创建数组

【1】使用new关键字

var arr=new Array();//[]
var arr=new Array(7);//(7) [empty × 7]
var arr=new Array('one','hello')
let arr=new Array(1,3,4)//Array(3)

【2】使用字面量来创建

var arr=[]
var arr=['one','hello']

数组方法(添加,删除)

【1】往数组添加元素

push()//
unshift()方法//在数组头部添加元素

示例


let arr=[2,3,5,0]
let s= arr.push(11)
console.log(s)//5返回数组个数
let arr=[2,3,5,0]
let a=arr.unshift(9,12, '',13)
console.log(a)//8

【2】删除数组中的元素

pop()//删除数组尾部的元素
shift()//删除数组头部的元素

示例

let arr=[1,2,3,5,0]
let s= arr.pop()//返回删除的元素
console.log(s)//0

let arr=[2,3,5,0]
let s= arr.shift()
console.log(s)//2

【3】在数组任意位置上添加或删除元素

splice(index,count,要添加的元素)

第1个参数:表示要删除或者插入的元素的索引(下标)
第2个参数:表示要删除元素的个数
第3个之后参数:表示要添加到数组的元素

示例

let arr=[2,9,5,0]
let a=arr.splice(1,1)
console.log(a)//[9]返回删除的元素
console.log(arr)//(3) [2, 5, 0]
let arr=[2,9,5,0]
let a=arr.splice(0,1,3,5,89,45)
console.log(a)//[2]
console.log(arr)//(7)[3, 5, 89, 45, 9, 5, 0]
let arr=[2,9,5,0]
let a=arr.splice(1,1,3,5,89,45)
console.log(a)//[9]
console.log(arr)//(7) [2, 3, 5, 89, 45, 5, 0]

数组方法

1、数组合并

concat 连接两个或者多个数组

var arr1=[1,3]
var arr2=[3,3,6]
var arr3=[9,8,0]
var num=arr1.concat(arr2,arr3)
console.log(num)//(8) [1, 3, 3, 3, 6, 9, 8, 0]

2、迭代器函数

every 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true

//如果数组里的所有元素可以被2整除,函数返回true
   let isOdd=function odd(x){
    if(x%2===0){
     return true
    }else{
     return false
    }
   }
   let num=[2,6,8,14]
   console.log(num.every(isOdd))//true

filter对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。


   let isOdd=function odd(x){
    if(x%2===0){
     return true
    }else{
     return false
    }
   }
   let num=[2,6,8,14,1,3]
   console.log(num.filter(isOdd))//[2,6,8,14]

some对数组中的每一项运行给定函数,如果任意一项返回true,则返回true


//如果数组里的任一元素可以被2整除,函数返回true
   let isOdd=function odd(x){
    if(x%2===0){
     return true
    }else{
     return false
    }
   }
   let num=[2,6,8,14,1,3]
   console.log(num.some(isOdd))//true

forEach 遍历,没有返回值

   let isOdd=function odd(x){
    if(x%2===0){
     console.log(true)
    }else{
     console.log(false)
    }
   }
   let num=[2,6,8,14,1,3]
   num.forEach(isOdd)

map对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组

   let isOdd=function odd(x){
    if(x%2===0){
     return true
    }else{
     return false
    }
   }
   let num=[2,6,8,14,1,3]

console.log(num.map(isOdd))//[true,true,true,true,false,false]

reduce,累计

let arr=[1,4,6,7]
let sum=0
let s=arr.reduce(function(sum,item){
 return sum+=item
})
console.log(s)//18

搜索与排序

reverse 颠倒数组

var arr=[1,3,78]
console.log(arr.reverse())//(3) [78, 3, 1]

sort按照默认数组排序

var arr=[1,3,78,23]
console.log(arr.sort())//(4) [1, 23, 3, 78]

数组按从小到大排序

var arr=[1,3,78,23]
function smallTo(value1,value2){
 if(value1>value2){
  return 1
 }else{
  return -1
 }
}
let newArr=arr.sort(smallTo)
console.log(newArr)//(4) [1, 3, 23, 78]

数组按从大到小排序


var arr=[1,3,78,23]
function smallTo(value1,value2){
 if(value1>value2){
  return -1
 }else{
  return 1
 }
}
let newArr=arr.sort(smallTo)
console.log(newArr)//(4) [78, 23, 3, 1]

indexOf搜索

var arr=[2,4,6,8,3,1]
let item=arr.indexOf(8)//搜索元素所在的索引
console.log(item)//3

lastIndexOf搜索

var arr=[2,4,8,6,8,3,1]
let item=arr.lastIndexOf(8)//搜索元素最后一次出现所在位置的索引
console.log(item)//4

slice截取数组的元素片段

示例1

var arr=[2,4,8,6,8,3,1]
let newArr=arr.slice(0)
console.log(newArr//7) [2, 4, 8, 6, 8, 3, 1]
console.log(arr)//(7) [2, 4, 8, 6, 8, 3, 1]

示例2

var arr=[2,4,8,6,8,3,1]
let newArr=arr.slice(1)
console.log(newArr)//(6) [4, 8, 6, 8, 3, 1]
console.log(arr)//(7) [2, 4, 8, 6, 8, 3, 1]

示例3

var arr=[2,4,8,6,8,3,1]
let newArr=arr.slice(1,3)
console.log(newArr)//(2) [4, 8]
console.log(arr)//(7) [2, 4, 8, 6, 8, 3, 1]

数组转为字符串

join将所有数组连接成一个字符串

var arr=[2,4,8,6,8,3,1]
let str=arr.join('')
console.log(str)//2486831
console.log(typeof str)//string

toString将数组作为字符串返回

var arr=[2,4,8,6,8,3,1]
let str=arr.toString()
console.log(str)//2,4,8,6,8,3,1
console.log(typeof str)//string

toLocaleString将数组转为字符

var arr=[2,4,8,6,8,3,1]
let str=arr.toLocaleString()
console.log(str)//2,4,8,6,8,3,1
console.log(typeof str)//string

数组扁平化

ES6中flat方法

let arr=[1,4,6,7,[2,67]]
let newArr=arr.flat()
console.log(newArr)//(6) [1, 4, 6, 7, 2, 67]
newArr.push(2)
console.log(newArr)//(7) [1, 4, 6, 7, 2, 67, 2]
console.log(arr)//(5) [1, 4, 6, 7, Array(2)]

利用for循环,判断是否存在数组。若为数组则利用扩展运算符展开

let arr=[1,4,6,7,[2,67]]
let newArr=[]
for(let i=0,len=arr.length;i<len;i++){
 if(Array.isArray(arr[i])){
  newArr.push(...arr[i])
 }else{
  newArr.push(arr[i])
 }
}
console.log(newArr)//(6) [1, 4, 6, 7, 2, 67]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值