javaScript的数组

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 console.log(attr[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);

你可能感兴趣的:(javaScript的数组)