JavaScript数组 ApI

本文详细介绍了JavaScript中的数组API,包括栈与队列方法、排序与查找操作,以及实例演示了排序、过滤、映射等高阶函数。同时涵盖了数组类型的判断、归并与操作技巧,如拼接、切片、搜索等,并通过实例展示了如何使用reduce和其变种。
摘要由CSDN通过智能技术生成

数组 API:
栈方法 :后进先出

/*
栈方法 :后进先出  
push(): 数据的插入 -->从最后插入
pop(): 数据的删除--->从最后删除
*/

// push()

let arr=[];
arr.push("red");  //插入一条
arr.push("green","yellow");  //插入多条
let result=arr.push("blue");   //返回数组的长度
console.log(result);   
console.log(arr);

//pop()
let color=['red','blue','green','yellow];
let P= color.pop();
console.log(P);
console.log(color);

队列方法: 先进先出

/*
队列方法: 先进先出
unshift()  在数组开头添加数据
shift()  在数组开头删除数据
*/

//unshift()
let arr["green","blue","red"];
arr.unshift("pink");
console.log(arr);      // pink green blue red

//shift
arr.shift();
console.log(arr);    //green  blue red

排序方法:

/*
排序方法:
sort()  对数组进行一个从小到大的排序
reverse() 对数组进行一个反转
*/
//sort()

let arr=[1,9,4,3,5,6,2];
arr.sort();
console.log(arr);

//sort 的局限性
let arrs=[1,,123,85,34,5,8,96];
arrs.sort();
console.log(arrs);    //排除的顺序不一样

//对 sort()方法的优化
let arrs=[1,,123,85,34,5,8,96];
arrs.sort(function(num1,num2){
	if(num1<num2){
		return -1;
	}else if(num1>num2){
		return 1;
	}else{
		return 0;
	}
})

//反转数组  reverse:
 let arr=[15,45,32,49,36];
 arr.reverse();
 console.log(arr);    // 36,49,32,45,15

判断数组类型: instanceof isArray

//判断数组类型: instanceof   isArray
let arr=[];
console.log(arr instanceof Array);   // true
console.log(arr instanceof Function); //false

console.log(Array.isArray(arr));  // true

数组的迭代器方法:(高阶函数)

/*
数组的迭代器方法: 
every:
filter: 
forEach:
map:
some:
*/

// forEach(): 遍历数组
let arr=['red','blue','green','yellow];
arr.forEach(function(item,index){      //item就是遍历数组的每一项 index是下标
	console.log(item+"--"+index);
})


//every(): 判断每一项是否都返回true ,如果是,结果就返回 true, 有一项不是的话,就返回 false

let  num=[1,2,3,4,5,4,3,2,1];
let result=num.every(function(item,index){
	return item>0;
})
console.log(result);   // true


//some() :判断数组中只要有一项返回 true,那么结果就为 true
let  num=[1,2,3,4,5,4,3,2,1];
let result=num.some(function(item,index){
	return item>0;
})
console.log(result);   // true


//filter(): 数组的筛选,会返回一个新的数组 ,但不会改变原数组
let arr=[15,4,1,3,96,45,62];
let newArr=arr.filter(function(item,index){
		return item>40;
})
console.log(newArr);  // 96,45,62
console.log(arr);  //15,4,1,3,96,45,62


//map():修改数组的值
let nums=[1,2,3,4,5,4,3,2,1];
let mapResult=nums.map(function(item,index){
		return item*2;
})
console.log(mapResult);   // 2,4,6,8,10,8,6,4,2
console.log(map);  // 1,2,3,4,5,4,3,2,1


//map()局部修改
    let list=[
        {
            id:1,
            title:'白鹿原',
            name:"城忠实",
            price:30
        },
        {
            id:2,
            title:'蛙',
            name:"莫言",
            price:38
        },
        {
            id:3,
            title:'狂野大陆',
            name:"小白",
            price:60
        },
        {
            id:4,
            title:'原始森林',
            name:"大黑",
            price:115
        }
    ];
let newList=list.map(function(item,index){
	item.isSell=true;
	if(item.name=="莫言"){
		item.price+=3;
	}
	return item;
})
console.log(newList);

数组的归并方法:

/*
数组的归并方法:
reduce(): 从头到尾
reduceRight():从尾到头 
*/

//reduce():
let num=[1,2,3,4,5];
let sum=num.reduce(function(prev,cur,index){    //prev之前的值 cur现在的值 index下标
	return prev+cur;
});
console.log(sum);  //15


// reduceRight():
let num=[1,2,3,4,5];
let sum=num.reduceRight(function(prev,cur,index){    //prev之前的值 cur现在的值 index下标
	return prev+cur;
});
console.log(sum);  //15  

数组的操作方法:

/*
数组的操作方法:
concat(): 数组(元素)的拼接
slice():数组的切片
join():把数组元素按照指定字符串拼接
splice():数组(元素)的 增加 删除 修改    会改变原数组
*/

//concat():数组(元素)的拼接
let arr=['red','block','blue'];
let arr2=['yellow'];
let arr3=arr.concat(arr2);
console.log(arr3);


//slice(strat,end): start:包括开始  end:不包括结束     ------>   数组(元素)的截取
let arr=['red','block','blue','yellow','pink'];
let arr1=arr.slice(1);
console.log(arr1);      //  'block','blue','yellow','pink'


//join():把数组元素按照指定字符串拼接
let arr=['red','block','blue','yellow','pink'];
let str=arr.join('-');
console.log(str);


//splice(): 元素的增加,删除,修改   会改变原数组
let arr=['red','block','blue','yellow','pink'];
//删除
arr.splice(0,1);      //第一个值代表从哪一个开始删除  第二个值代表要删除几个
//修改
arr.splice(1,1,'purple')
//增加
arr.splice(2,0,'orange','skyblue');
console.log(arr);

数组的搜索和位置方法:

/*
数组的搜索和位置方法
indexof():找到元素所对应的索引
lastIndexof():找到最后一次出现的所引
includes():判断元素是否在数组中
find():找到第一个返回条件的
findIndex():找到索引位置
*/


let arr=[1,2,3,4,5,4,3,2,1];
//indexof():
console.log(arr.indexof(4));   //3
//lastIndexof():
console.log(arr.lastIndex(4));  //5
//includes():
console.log(arr.includes(8));  //false
console.log(arr.includes(2));  //true


//find():找到第一个返回条件的
        let  people=[
            {
                title:"本草纲目",
                price:20
         },
           {
                title:"告白气球",
               price:15
           }
        ]
       let result=people.find(function(item,index){
           return item.price<50
       })

       console.log(result);

 //findIndex(): 找到索引位置
        let  people=[
           {
               title:"本草纲目",
               price:20
          },
          {
               title:"告白气球",
               price:15
          }
       ]
      let result=people.findIndex(function(item,index){
          return item.price<50
      })

      console.log(result);    //0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值