数组

66 阅读2分钟

1.数组的读和写

// 数组不可以溢出读,溢出部分是undefined
var arr = [1, 2, 3];
console.log(arr[3]); // 输出undefined
 
// 数组可以溢出写
var arr = [1, 2, 3];
arr[3] = 4;
console.log(arr); // 输出 [1, 2, 3, 4]

2.数组中常用的方法之改变元素组的方法

// push pop 新增 / 删除数组末尾元素
var arr = [1, 2];
arr.push(3); // 输出3 是数组的长度
console.log(arr); // 输出[1, 2, 3]
arr.pop(); //输出3 是删除的元素
console.log(arr); // 输出[1, 2]
 
// shift unshift 删除 / 新增数组头部元素
arr.unshift(3); // 输出3 是数组的长度
console.log(arr); // 输出[3, 1, 2]
arr.shift(); // 输出3 是删除的元素
console.log(arr); // 输出[1, 2]
 
// reverse 数组反转
arr.reverse(); // 输出[2, 1]
console.log(arr); // 输出[2, 1]
 
// sort 函数返回a-b,增序
arr.sort( (a, b) => a - b); // 输出[1, 2]
console.log(arr); // 输出[1, 2]
 
// splice(index, count, prop1, prop2...) 第一个参数是从数组下标第几项开始,
 //第二个参数是需要截取的长度,之后的参数是该位置新增的元素
arr.splice(0, 2, 9, 8); // 输出[1, 2]
console.log(arr); // 输出 [9, 8]

3.数组方法之不改变原数组

  • concat toString slice join split
// concat 用来连接两个数组
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
console.log(arr1.concat(arr2)); // 输出[1, 2, 3, 4, 5, 6]
console.log(arr1); // 输出[1, 2, 3]
console.log(arr2); // 输出[4, 5, 6]
 
// toString 将数组转换为字符串
arr1.toString(); // 输出"1,2,3"
 
// slice(first, end) first是截取数组的第一个下标,end是截取到数组的第几位,包括end
arr1.slice(1, 2); // 输出[2]
arr1.slice(-2); //带负号代表从后往前数,最后一个代表着-1,输出[2]
 
// split() 将字符串转换为数组
var str = "name";
str.split(""); // 输出["n", "a", "m", "e"]
str.split("n"); // 输出["", "ame"]
 
// join() 将数组转化为字符串
arr1.join(""); // 输出"123"

4.回调函数

  item (元素) index (指它的索引)  array(数组本身)
// forEach 遍历 (方法允许为数组的每个元素都运行一个函数)
var sum = ["aaa","bbb","ccc","ddd"]
// 回调函数
sum.forEach(function(i,l) {   // i 和 l可以随意改变
console.log(i,l)    
  });
输出 aaa 0
     bbb 1 ......
     
 // map 映射 (它对每个函数都调用函数,并返回结果数组)
 var arr1 =[1,2,3,4,5]
 var arr2 = arr1.map(function(i){
 return i*i
    })
 console.log(arr2) //输出[1,4,9,16,25]
 
 // filter 过滤 (返回所有匹配的数组)
        var arr = [
            {
                name:"aaa",
                price:100
            },
            {
                name:"bbb",
                price:200
            },
            {
                name:"ccc",
                price:300
            }
        ]
        var  arr2 = arr.filter(function(item){
            return item.price>200
        })
        console.log(arr2) (输出:{name:"aaa", price:300})
        
// every 只有每一个都符合才输true
       var arr = [90,91,92,94]
       var arr2 = arr.every(function(item){
        return item>=90
       })
       console.log(arr2)
       
// some 只要有一个符合就输出true  (方法同上)

5.数组去重

// indexOf 搜索 (若输出-1,则没有这个函数值)
var arr = [1,2,3,4,3,5,6,2,1]
var arr2 = []
for (var i=0;  i<arr.length; i++){
    if( arr2.indexOf(arr[i])=== -1){
        arr2.push(arr[i])
    }
}
console.log(arr2) (输出[1,2,3,4,5,6]