JS数组

1.创建数组

  1. 数组文本
    var dogs = ['pony', 'jerry']
    
  2. new
    var dogs = new Array('pony','jerry');
    
    注意
    在这里插入图片描述
    在这里插入图片描述

2. 访问数组元素

		通过索引号访问

3. 添加数组元素

  1. push
  2. length属性

4. 关联数组

	命名索引的数组
	js不支持,只支持数字索引

数组和对象的区别js
数组数字索引,对象命名索引

5. 如何识别数组

typeof 返回的 Object

  1. isArray()
  2. instanceof
  3. 重写isArray()
    function isArray(x){
    return x.constructor.toString().indexOf("Array")>-1;
    }
    

6. 数组方法(☆☆☆☆☆)

1.toString()将数组转换成用逗号分隔的字符串

		var fruits = ["Banana", "Orange", "Apple", "Mango"];
		console.log(fruits.toString());
  1. join()数组元素结合为一个字符串

  2. pop() 删除最后一个元素

  3. push() 数组结尾处添加一个新的元素

    栈:栈顶操作,先进后出
    pop()和push()会改变原数组
    push() 返回的是数组的长度

  4. shift() 删除首个数组元素 其他元素索引相应改变

  5. unshift() 在开头添加元素 其他元素索引相应改变

    shift() 返回的是被移除的元素 
    unshift()  返回的是数组长度
    两者都改变了原数组  
    
  6. delete 删除元素

  7. splice() 向数据添加新项 | 删除元素

  8. concat() 数组拼接

  9. slice() 截取数组片段 创建新的数组 不会改变源数组

  10. sort() 按字符串顺序进行排序

  11. reverse() 反转数组中的元素

var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.toString());
console.log(fruits);
console.log(fruits.join("*"));
console.log(fruits);
console.log(fruits.pop());
console.log(fruits);
console.log(fruits.push('purper'));
console.log(fruits);
console.log('-------shift()和unshift()测试-----');
console.log(fruits.shift());
console.log(fruits);
console.log(fruits.unshift('lemon'));
console.log(fruits);
console.log('-------splice()测试-----');
//返回的是被删除的元素
//会改变原数组  
//参数1:应添加新元素的位置
//参数2:删除多少元素
//其余:添加的新元素 
console.log(fruits.splice(2, 0, "Lemon", "Kiwi"));
console.log(fruits);
console.log(fruits.splice(0, 1));
console.log(fruits);
console.log('-------concat()测试-----');
var myGirls = ["Cecilie", "Lone"];
var myBoys = ["Emil", "Tobias", "Linus"];
var myChildren = myGirls.concat(myBoys);
console.log(myChildren);
console.log('-------slice()测试-----');
//用数组的某个片段切出新数组
//不会改变原数组  返回的是新数组
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
//从索引下标为3的元素开始截取(包括3)
var citrus = fruits.slice(3);
console.log(fruits);
console.log(citrus);
//从索引下标为1的元素开始截取  索引为3的元素结束(不包括结束元素)
var citrus = fruits.slice(1, 3);
console.log(citrus);
console.log('-------sort()和reverse()测试-----');
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // 对 fruits 中的元素进行排序
console.log(fruits);
fruits.reverse(); // 反转元素顺序
console.log(fruits);
//sort排序按字符串顺序进行排序 对数字排序会产生不正确的结果
var points = [40, 100, 1, 5, 25, 10];
points.sort();
console.log(points);
//升序
points.sort(function(a, b) {
    return a - b;
})
console.log(points);
//以随机顺序排序数组
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b) { return 0.5 - Math.random() });
console.log(points);

在这里插入图片描述

7.在数组内查最大最小值(☆☆☆☆☆)

  1. 通过在sort()内定义 比较函数 排序之后获得最大最小值(效率低)
  2. 利用apply()方法
function arrayMax(arr) {
    return Math.max.apply(null, arr);
}
var nums = [1, 2, 3, 4, 5];
console.log(arrayMax(nums));
//5

function arrayMin(arr) {
    return Math.min.apply(null, arr);
}
console.log(arrayMin(nums));
//1
  1. 定义方法
function arrayMax(arr) {
    var max = -Infinity;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    return max;
}
var nums = [1, 3, 4, 25, 33];
console.log(arrayMax(nums));
//33

function arrayMin(arr) {
    var min = Infinity;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] < min) {
            min = arr[i];
        }
    }
    return min;
}
console.log(arrayMin(nums));
//1

8.排序对象数组

var cars = [
    { type: "Volvo", year: 2016 },
    { type: "Saab", year: 2001 },
    { type: "BMW", year: 2010 }
];
//通过比较函数来对比属性值
cars.sort(function(a, b) {
    return a.year - b.year
})
console.log(cars);
//两值相减为负  将a排在b之前
cars.sort(function(a, b) {
    var x = a.type.toLowerCase();
    var y = b.type.toLowerCase();
    if (x < y) { return -1; }
    if (x > y) { return 1; }
    return 0;
});
console.log(cars);

9.数组迭代(☆☆☆☆☆)

IE9以上 兼容性

  1. Array.forEach()

    	forEach(function(value,index,array){
    	//value 项目值
    	//index  项目索引
    	//array  数组本身
    	})
    
  2. Array.map()

     对每个数组元素执行函数来创建新数组
     不会对没有值的数组元素执行函数
     不会更改原始数组
    
  3. Array.fliter()

     创建一个满足条件的是数组
    
    var nums = [1, 2, 4, 3, 2, 1];
    //遍历数组
    nums.forEach((item, index, array) => {
    console.log(item);
    return item * 2;
    })
    console.log(num);
    //创建新的数组 每个值*2
    //不改变原数组
    var num = nums.map((item, index, array) => {
    	return item * 2;
    })
    console.log(num);
    //打印结果:[ 2, 4, 8, 6, 4, 2 ]
    var num = nums.filter((item, index, array) => {
    	return item > 2;
    })
    console.log(num);
    //打印结果:[ 4, 3 ]
    var num = nums.map((item, index, array) => {
    	return item > 2;
    })
    console.log(num);
    //打印结果:[ false, false, true, true, false, false ]
    
  4. Array.reduce()
    将数组元素计算为一个值(从左到右

  5. Array.reduceRight()
    将数组元素计算为一个值(从右到左)

    var nums = [45, 12, 4, 6, 7];
    var num = nums.reduce((total, item, index, array) => {
    console.log('-----');
    console.log(total);
    console.log(item);
    console.log(index);
    return total + item;
    })
    console.log('----结果---');
    console.log(num);
    

    在这里插入图片描述

     	参数
     	1. total:总数(初始值/前一次返回的值)
     	2. item:项目值
     	3. index:项目索引
     	4. array:原数组
     	从索引为1的元素开始计算
    
  6. Array.every()
    检查所有数组值是否通过测试
    功能类似:Array.filter() 返回值不同

    var nums = [2, 4, 8, 7, 6];
    var num = nums.every((item, index, array) => {
    		 return item > 2;
    		 //return item > 1; //true
    })
    console.log(num);
    //打印结果false
    var num = nums.filter((item, index, array) => {
    	 return item > 2;
    })
    console.log(num);
    //打印结果:[ 4, 8, 7, 6 ]
    
  7. Array.some()
    检查某些数组值是否通过了测试

  8. Array.indeOf()
    在数组中搜索元素值并返回其位置

     参数:
     item:必需,检索目标项
     start:可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。
     返回值:
     出现一次目标:返回目标项的数组索引
     未出现目标相:返回-1
     出现多次目标项:返回第一次出现目标项索引
    
    var fruits = ["Apple", "Orange", "Apple", "Mango"];
    var a = fruits.indexOf("Ape");
    console.log(a);
    //a=-1
    var b = fruits.indexOf("Apple");
    console.log(b);
    //b=0
    
  9. Array.lastIndexOf()
    与 Array.indexOf() 类似,但是从数组结尾开始搜索
    参数同上

  10. Array.find()
    返回通过测试函数的第一个数组元素

  11. ArrayIndex()
    返回通过测试函数的第一个数组元素的索引

        var nums = [1, 2, 7, 8, 5];
        var num = nums.find((item, index, array) => {
    	 return item > 2;
       })
       console.log(num); //7
       var index = nums.findIndex((item, index, array) => {
    	return item > 2;
       })
       console.log(index); //2
    
       数组基础
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值