关于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('|')); //  接受一个字符串作为分隔符

concat,合并两个数组 

var arr = [1,2,3]
let array = arr.concat(4,5,6,7) 或 arr.concat([4,5,6,7])
console.log(array)    // [1, 2, 3, 4, 5, 6, 7]

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

  • 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]
 可以用来深复制一维数组,多维需另写代码
 var arr = Array.from([1,2,3,4])

 映射转换:传入映射函数(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"]

delete删除数组元素: 原来的长度不变,只是将删除位置上的元素用undefined代替了

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

数组的增删方法:push,pop,shift,unshift,slice,splice

var arr = [1,2,3,4];
arr.push(1,5);// 在数组尾部添加新的项,会返回最终数组的长度
arr.pop();// 删除数组尾部的第一项,会返回删除项的值
arr.shift(); //删除数组开头的第一项,会返回删除项的值
arr.unshift(10,9,8); //在数组前端加入新的项,会返回最终数组的长度

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);

数组排序reverse,sort

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;
    }
}

查找项的索引或值: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);

数组迭代方法:forEach ,map,every ,some,filter,reduce

var arr = [2,3,4,5,6,7];

//   forEach 

arr.forEach(function(item,index){
    console.log(item + 1);
    console.log(index);
});

//   map,和forEach的区别就是,map可以有返回值,而forEach没有

arr.map(function(item,index){
    console.log(item + 1);
    console.log(index);
    return item;
});

//   every // 检测每一项是否满足条件,全部满足,则输出true

var result= arr.every(function(item,index){
     return item > 3;
});

//  some // 检测每一项是否满足条件,只要有一项满足,则输出true

var result= arr.some(function(item,index){
     return item > 3;
});

// filter // 刷选出符合条件的数据,组成新数组

var newArr= arr.filter(function(item,index){
     return item > 3;
});
console.log(newArr); // [4,5,6,7]

// reduce // 接受一个函数,返回一个值,后面的方法的第一个参数是返回的值,第二个参数是当前的项的值

function add(runningTotal, currentValue){
    return runningTotal + currentValue;
}
var nums = [1,2,3,4,5];
var sum = nums.reduce(add);
console.log(sum); // 15

// 也可以连接数组
function concat(accumulatedString, item){
    return accumulatedString + item;
}
var words = ['the ', 'quick ', 'brown ', 'fox'];
var sentence = words.reduce(concat);
console.log(sentence); // the quick brown fox

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值