|
主题设置

卡片式面板通常用于非白色背景色的主体内

JS 数组

JS 中,数组(Array)是一种用于存储多个值的数据结构。它可以容纳任意类型的值,包括数字、字符串、对象、函数等。

数组声明

// 1、通过构造函数创建数组
var arr0 = new Array();		// 创建一个空数组,没有元素

var arr1 = new Array(5);	// 创建一个长度为 5 的数组;如果数组有长度,但是没有赋值,那么里面每个默认值就是 undefined
arr1[3] = 300;				// 通过索引给数组赋值

var arr2 = new Array(10,20,30,40,50);	// 创建一个长度为 5 的数组,并同时赋值

// 2、通过字面量的方式创建数组(基本类型创建数组)
var arraryName1 = [];		// 空数组
arraryName1[0] = "John";
arraryName1[1] = "Doe";
arraryName1[2] = 46; 
arraryName1.push("我是添加元素");	// 添加在末尾

var arraryName2 = [1,2,3];		// 非空数组,含 3 个整数元素
var arraryName3 = ['a','c'];	// 非空数组,含两个字符串元素
var arraryName4 = [10,'哈哈',true,null,undefined,new Object()];	// 非空数组,含各种类型的元素(不建议存多种类型,不利于对元素操作)

// 输出数组
console.log(arr);		// 直接输出数组名,就能输出数组内容
console.log(arr[1]);	// 输出数组 arr 里的第 2 个元素(索引 1 位置的元素)

数组操作

// 循环输出数组
var arr = [10,20,30,40,50];
for(var i=0; i<arr.length; i++){
	console.log(arr[i]);
}
 
// 求数组中所有元素的和
var arr1 = [10,20,30,40,50];
var sum = 0;
for(vaar i=0; i<arr1.length; i++){
    sum += arr1[i];
}
console.log(sum);

// 求数组中所有元素的平均值
var arr2 = [1,2,3,4,5];
var sum2 = 0;
for(var i=0; i<arr2.length; i++){
    sum2 += arr2[i];
}
console.log(sum2/arr2.length);
 
// 求数组中所有元素中的最大值
var arr3 = [1,3,2,5,10,100];
var max = arr3[0];	// 假设 max 中存储的是最大值
for(var i=0; i<arr3.length; i++){
    if(max < arr3[i]){
        max = arr3[i];
    }
}
console.log(max);

// 倒序遍历数组
var arr4 = [10,20,30,40,50];
for(var i=arr4.length-1; i>=0; i--){
    console.log(arr4[i]);
}
 
// 把数组中每个元素用|拼接到一起
var names = ['张三','李四','王五'];
var str = '';	// 这里必须有 ='',否则 str 就是 Undefined 类型
for(var i=0; i<names.length; i++){
    str += names[i] + '|';
}
console.log(str);

// 去掉数组中重复的 0
var arr5 = [10,0,20,30,0,50,0];
var newArr = [];	// 用来存放原数组中非 0 的元素
for(var i=0; i<arr5.length; i++){
    if(arr5[i] != 0){
        newArr[newArr.length] = arr5[i];	// 把新数组的长度作为下标使用,数组的长度是可以改变的
    }
}
console.log(newArr);
 
// 反转数组(把数组中对称的元素的位置对调)
var arr6 = [10,20,30,40,50];
for(var i=0; i<arr6.length/2; i++){	// 获取交换次数
    var temp = arr6[i];
    arr6[i] = arr6[arr6.length-1-i];
    arr6[arr6.length-1-i] = temp;
}
console.log(arr6);

// 提示用户输入班级人数及每个人的分数
var perCount = parseInt(prompt('请输入班级人数'));
var perScores=[];	// 定义数组存储班级每个人的成绩
for(var i=0; i<perCount; i++){
    perScores[perScores.length] = pareseInt(prompt('请输入第'+(i+1)+'个人的成绩:');	// perScores数组的长度会随着元素而增加
}
console.log(perScores);

// 冒泡排序
var arr5=[20,10,40,50,30];
for(var i=0; i<arr5.length-1; i++){	// 获取总共比较几轮(5个元素就比较4轮)
    for(var k=0; k<arr5.length-1-i; k++){	// 获取每轮比较几次(第一轮比较4次:5-1-0)
        if(arr5[k]<arr5[k+1]){	// 前面的元素比后面小,则交换
            var temp = arr5[k];
            arr5[k] = arr5[k+1];
            arr5[k+1] = temp;
    	}
    }
}
console.log(arr5);

// 数组的方法
arr.length;					// 获取数组的长度
arr.length = 0;				// 设置 arr 数组的长度为 0,相当于清空了 arr 数组
console.log(arr instanceof Array);	// 判断 arr 是不是数组,返回 bool 值
Array.isArray(arr);			// 判断 arr 是不是数组,返回 bool 值
var newArr = Array.from(arr);// 克隆 arr 数组
arr1.contact(arr2,arr3,arr4,arr...);// 合并 arr1 和其他数组,组成一个新数组
arr.push(300);				// 将 300 追加到 arr 的最后,返回插入后的数组的长度
arr.unshift(500);			// 将 500 添加到 arr 的最前面,返回插入后的数组的长度
arr.pop();					// 删除数组最后一个元素,然后返回删除的这个元素的值
arr.shift();				// 删除数组第一个元素,然后返回删除的这个元素的值
arr.indexOf(100);			// 查找元素 100 在 arr 中的索引,没有就返回 -1
arr.lastIndexOf(300);		// 从数组最后往前找,元素 300 在 arr 中的索引(找到后,索引都是从左往右计算的),没有返回 -1
arr.join("|");				// 将 arr 中的元素,以 | 拼接起来,返回字符串
arr.reverse();				// 反转数组,即把数组中对称的元素的位置对调
var newArr = arr.slice(3,8);// 从数组索引 3 的元素处,截取到索引 8 处的元素前,不包括索引 8 处的元素
arr.splice(0);				// 清空掉数组,在 arr 数组索引 0 的位置,向后删掉所有元素(包括索引 0 位置处的元素)
arr.splice(2,1);			// 在 arr 数组索引 2 的位置,向后删掉一个元素(包括索引 2 位置处的元素)
arr.splice(2,0,234);		// 在 arr 数组索引 2 的位置前,插入元素 234,中间的 0 表示不删除任何元素
arr.splice(2,1,234);		// 在 arr 数组索引 2 的位置前,插入元素 234,中间的 1 表示在插入之前,先向后删掉一个元素(包括索引 2 位置处的元素)

// 将 arr 的所有元素,都执行括号中的函数,然后返回新数组
var newArr = arr.map(Math.sqrt);

// 返回对象中的指定字段
var newArr = checkRows.data.map(function (d) {
   return d.id;
});

// every(参数是函数)方法:对数组中的每一个元素都进行校验,如果都符合条件,返回 true,否则返回 false
// function 里的参数,ele 表示各个元素的值,index 表示索引的值,resource:谁调用了这个方法,那么 resource 就是谁,即原数组。
var arr1 = [1000,2000,3000];
arr1.every(function(ele,index,resource){
    return ele > 2000;	// 数组中的每个元素都要大于 2000
});

// filter(参数是函数)方法:让数组中的每个元素都执行里面的函数,返回符合条件的元素
var arr = [10,0,20,0,40,0,60,100,0];
var newArr = arr.filter(function(elem){
    return elem != 0;
});
console.log(newArr);	// 最后输出[10,20,40,60,100]
                   
// forEach(参数是函数):相当于循环,遍历数组
arr.forEach(function(elem,index){
    console.log(elem + ":" + index);	// 输出了每个元素,及其索引
});

// sort(参数是函数):对数组进行排序(升序),其中参数 a 是 arr[i],参数 b 是 arr[i+1]
var arr = [1,40,20,10,55,3,100]
arr.sort(function(a,b){	// sort 方法可能不稳定,所以要添加下面的 function 参数里的内容
    if(a>b){ 
    	return 1;	// arr[i] 大于 arr[i+1],返回 1
    }else if(a == b){
    	return 0;	// arr[i] 等于 arr[i+1],返回 0
    }else{
    	return -1	// arr[i] 小于 arr[i+1],返回 -1
    }
});
console.log(arr);	// [1,3,10,20,40,55,100]

// 遍历数组,删除掉其中不符合条件的元素
for(let i=receiveTableData.length-1; i>=0; i--){
    if(receiveTableData[i].currentReceiveQty <= 0){
    	receiveTableData.splice(i,1);
    }
}