关于javaScript数组的方法

创建数组的方法:

  • 1.使用Array构造函数 
var Array1 = new Array(); // 空数组
var Array2 = new Array(10); // 10个长度的数组
var Array3 = new Array(1,2,3); //  包含1,2,3的元素的数组
  • 2.字面量方式
var Array = [];  // 空数组
var Array = [1,2,3];  //  包含1,2,3的元素的数组
  • 3.ES6新增 Array.of() :与Array构造方式类似,不同之处,当传入只有一个参数的时候,会被当做数据的唯一项,而不是length的值
var arr = Array.of(2);
console.log(arr.length); //1
console.log(arr[0]); //2

可以通过length改变数组的项:length 

var arr = [1,2,3,4];
console.log(arr.length); //4
arr.length = 2;
console.log(arr); //[1,2]

 判断是否为数组:instanceof,isArray

var arr = [1,2,3];
console.log(arr instanceof Array); // ES3 不适用当一个页面有多个框架:存在多个全局执行环境
console.log(Array.isArray(arr)); // ES5

 转换方式:toString, valueOf, toLocalString, join

var myInformation = ['zjf','boy','student'];
console.log(myInformation.toString());  // 转换为字符串
console.log(myInformation.valueOf());   // 返回数组对象的原始值
console.log(myInformation.toLocaleString()); //把数组转换为本地数组 调用的每一项是toLocaleString()方法
console.log(myInformation.join('|')); //  接受一个字符串作为分隔符

 将非数组对象转化为数组对象

  • 1.ES5:新建一个数组,用push的方式将非数组对象的每一个元素复制添加给新数组,返回新数组
  • 2.ES6:Array.from()
  • 3.split()方法根据设置的分隔符,将字符串转化为数组
 var Str = "12345";
 var arr = Array.from(Str);
 console.log(arr); //[1,2,3,4,5]

映射转换:传入映射函数(value) => value +1,就会遍历每一个元素,都加上1

 function translate() {
     return Array.from(arguments,(value) => value +1);
 }
 let numbers = translate(1,2,3);
 console.log(numbers);

 var myInformation = 'zjf,boy,student';
 let arr = myInformation.split(',');//该方法可以写第二个参数,第二个参数为输出数组的长度,不得大于原数组最大长度 myInformation.split(',',2)
 console.log(arr);//["zjf", "boy", "student"]

数组的方法:push,pop,shift,unshift,reverse,sort,slice,splice

var arr = [1,2,3,4];
arr.push(1,5);// 在数组尾部添加新的项
arr.pop();// 删除数组尾部的第一项
arr.shift(); //删除数组的第一项
arr.unshift(10,9,8); //在数组前端加入新的项
arr.reverse(); //反转数组顺序
var arr = [13,12,3,4];
arr.sort();//排序,会以字符串形式比较,所以会比较第一个遇到得数字,//12,13,3,4
arr.sort(compare);//可以接受一个比较函数作为参数
升序排序
function compare(value1,value2) {
    if (value1 < value2) {
        return -1;
    } else if (value1 > value2) {
        return 1;
    } else {
        return 0;
    }
}
var arr1 = [1,2,3];
var arr2 = [5,6,8]; // 将两个数组合并在一起
var arr = arr1.concat(arr2); // 不会改变原数组

var arr1 = [1,2,3,4,5,6,7,8,9];
var arr = arr1.slice(1,4); //传入一个开始位置和一个结束位置,返回给新的数组,如果传入的是负数,则加上数组的长度来确定位置
var arr = arr1.splice(1,4);// 第一个参数作为起始位置,第二个参数作为要删除的项数
var arr = arr1.splice(1,3,23,11,45,27); //第三个参数,开始作为插入的项,改变的是原数组
console.log(arr1);

查找项的索引或值:indexOf,lastIndexOf,find,findIndex 

var arr = [5,6,7,18,29];
var num = arr1.indexOf(4);// 可以传入查找项,返回该项的索引(从数组的开头开始查找)
var num = arr1.lastIndexOf(4);// 可以传入查找项,返回该项的索引(从数组的结尾开始查找)
var num = arr.find(n => n >7);// 返回的是查找到的值
var num = arr.findIndex(n => n >7);// 返回的是查找到的值的索引
console.log(num);
var result = arr.includes(7); // 传入一个值,查看数组中是否有该值,有返回true,无则false
console.log(result );
console.log(arr);

fill()方法和copyWithin()方法

var arr = [1,2,3,4];
arr.fill(1); //当传入一个值得时候,所有数组的值都会变成传入的值
arr.fill(1,2,3); //第二个参数表示改变值得起始位置,第三个参数表示结束位置,如果没有第三个参数,则从起始索引到数组结尾全变成传入的值 

arr.copyWithin(2,0); //第一个参数为开始填充的位置,第二个作为复制值位置,如果没有第三个参数,那个,从填充位置及之后的元素会被复制值及之后的元素替代 //[1,2,1,2]
arr.copyWithin(2,0,1); //第三个参数表示结束索引位置 // [1,2,1,4]
console.log(arr);

猜你喜欢

转载自blog.csdn.net/Dilomen/article/details/81814591