js中没有数组类型 js 中数组是以内置对象的形式存在
数组定义01
var attr = new Array('sunziheng','jack','jim','lili');
console.log(typeof attr); // object
console.log(attr);
// 数组的取值 点(不能操控数值)和 []
console.log(attr[0])
var attr02 = new Array() // 空数组
var attr03 = new Array(10) // 如果数组内只要一个参数 而且是数值 之表明长度
数组定义02
var arr = ['11','22','33']
console.log(arr);
// 获取数组的长度 有几个单元
console.log(attr.length)
数组的遍历
// 数组的遍历
for (var i = 0;i
}
forEach() 遍历数组
/*
* forEach(function(value,index,arrSelf){
*
* value 指向当前元素的值
* index 指向当前元素的索引
* arrSelf 指向当前数组本身
*
* })
*
* */
attr.forEach(function (a,b,c) {
console.log(a);
console.log(b);
console.log(c);
})
常用数组函数
/*
* 定义数组的方式:
* 1.使用new Array()
* 2. 使用 [] 的方式定义数组
*
* */
// 定义数组
var arr01 = ['sunziheng01','sunzieheng02','sunziheng03','sunziheng04'];
// indexOf() 正向查找数组单元 有查询的结果返回第一个对应的索引 不存在返回-1
var res = arr01.indexOf("sunziheng03");
console.log(res);
// lastIndexOf() 反向查找 不存在就返回 -1
var lastres = arr01.lastIndexOf('sunziheng03');
console.log(lastres);
// 数组的拼接
var a = [1,2,3,4]
var b = [5,6,7,8]
var c = arr01.concat(a);
var d = arr01.concat(a,b);
console.log(c);
console.log(arr01); // 凭借的和其没有关系
// join() 将数组的单元进行连接 返回字符串
var atrr02 = ['jim','lili','jack','jim02']
var atrr03 = arr01.join('@');
console.log(atrr03);
console.log(typeof atrr03); // string
// reverse() 反转
var arr04= atrr02.reverse(); // 反转后原数组改变
console.log(arr04);
console.log(atrr02);
// 弹出(删除)最后一个元素
var arr05 = atrr02.pop();
console.log(arr05);
console.log(atrr02);
// 弹出(删除) 数组的第一个元素
var arr06 = atrr02.shift();
console.log(arr06);
console.log(atrr02);
// 数组的插入
// push() 从数组尾部压入
// unshift() 从数组的头部插入
atrr08 = ['22','33']
var arr09 = atrr08.push('44');
console.log(atrr08);
var arr10 = atrr08.unshift('11');
var arr11 = atrr08.unshift(arr06);
var arr12 = atrr08.unshift(arr05);
console.log(atrr08);
//slice()[要前不要后) 数组元素的截取 不会影响原数组
var arr = ['道剑','天迹','地冥','人觉','君奉天'];
var res = arr.slice(1); // 1,到最后
var res02 = arr.slice(2,4); // [2,4)
var res03 = arr.slice(-2); //
var res04 = arr.slice(-3,-2);
console.log(res);
console.log(res02);
console.log(res03);
console.log(res04);
// splice() 截取 影响原数组
var arr02 = ['11','22','33','44','55','66','77','88'];
// var res = arr02.splice(1);
// console.log(res);
// var res = arr02.splice(3,2) // 位置3开始截取2个
var res = arr02.splice(1,3,'sunziheng','sunziheng02'); // 截取并插入
console.log(res);
console.log(arr02);
// 判断是否是数组
var arr03 = [];
var res = Array.isArray(arr03);
console.log(res);
// toString() 将对象转为字符串格式
var obj = {
uname:'sunziheng',
age:1000
}
var objStr = obj.toString();
console.log(objStr);
console.log(typeof objStr); // 没有太大作用
// 数组元素的toString();
var arr = [1,2,3,4];
var newStr = arr.toString();
console.log(newStr);
console.log(typeof newStr);
/* sort() 对数组元素进行排序
* sort() 设置数组的单元以升序进行排列
* 系统函数 进行数组单元的排序
* 需要的就会说传入一个进行比较的回调函数
* */
var arr = [100,90,80,101,40,50];
var res = arr.sort(function (a,b) {
// 正序
// if (a > b) {
// return 1;
// } else if (a < b) {
// return -1;
// } else {
// return 0;
// }
//
// return a - b; // 正序
return b - a; // 倒序
})
console.log(res);
/*
自定义数组排序函数 == 冒泡排序
规则:
每次在此比较时选取当前数组中最大的元素 放到数组的末尾
将相邻两个位置的值进行比较 如果该前面的值 > 后面的值 交换两者位置
-
*/
var arr = [100,30,20,50,70,80];
for (var i = 0;i < arr.length - 1;i++) {
if (arr[i] > arr[i + 1]) {
// 交换位置 此时需要引入第三个变量
var tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp;
}
}
console.log(arr);
for (var i = 0; i < arr.length - 1 -1;i++) {
if (arr[i] > arr[i + 1]) {
var tmp = arr[i];
arr[i] = arr[i + 1];
arr[i+1] = tmp;
}
}
console.log(arr);
console.log(arr.reverse());
console.log(arr.max);