在 javascript 中数组是很常见的,是较为常用的数据集合,其内置的方法有很多,熟练掌握数组的使用和数组方法的使用可以有效提高我们的开发效率。下面将介绍一下关于数组的一些使用。
创建数组
数组是 javascript 中常见的一种数据集合,熟练了解并掌握的前提是知道其如何创建/得到的。
1. 使用数组字面量表示法
var arr = []; // 创建一个空数组,arr为该数组名称
var arr1 = [20]; // 创建一个长度为1的数组arr1
var arr2 = ['a','b'] // 创建一个包含两个字符串的数组arr2
2. 使用 Array 构造函数
无参构造
var arr = new Array(); // 创建一个空数组
带参构造
如果只传入一个参数,则表示创建一个初始长度为指定数值的空数组。
var arr1 = new Array(20); // 创建一个长度为20的空数组
如果传入一个非数值的参数或者参数个数大于1,则表示创建一个包含指定元素的数组。
var arr2 = new Array('a','b','c'); // ['a','b','c']
var arr3 = new Array('23'); // ['23']
3. Array.of() 方法创建数组(es6 新增)
ES6 为数组新增创建方法的目的之一,是帮组开发者在使用 Array 构造器时避开 js 语言的一个怪异点。
Array 方法会创建一个包含所有传入参数的数组,而不管参数的数量和类型。
let arr = Array.of(1, 2);
console.log(arr.length); //2
let arr1 = Array.of(3);
console.log(arr1.length); //1
console.log(arr1[0]); //3
4. Array.from()方法创建数组(es6新增)
在 js 中将非数组对象转化为数组是非常麻烦的。但是,在 ES6 中将可迭代对象或类数组对象作为第一个参数传入,Array.from() 就能返回一个数组。
function arga(...args) {
//...args剩余参数数组,由传递给函数的实际参数提供
let arg = Array.from(args);
console.log(arg);
}
arga(arr, 26, from); // [ arr ,26, from ]
映射转换
如果想实现进一步的数组转换,可以向 Array.from() 方法传递一个映射用的函数作为第二个参数。此函数会将数组对象的每一个值转换为目标形式,并将其存储在目标数组的对应位置上。
function arga(...args) {
return Array.from(args, value => value + 1);
}
let arr = arga( arr , 26, pop );
console.log(arr);//[ arr1 ,27, pop1 ]
如果映射函数需要在对象上工作,你可以手动传递第三个参数给 Array.from()方法,从而指定映射函数内部的 this 值。
const helper = {
diff: 1,
add(value) {
return value + this.diff;
}
}
function translate() {
//arguments 是一个对应于传递给函数的参数的类数组对象
return Array.from(arguments, helper.add, helper);
}
let arr = translate( liu , 26, man );
console.log(arr); // ["liu1", 27, "man1"]
数组方法
1. join()
join() 方法用于将数组中的所有元素转换为一个字符串,不改变原数组。
元素是通过指定的分隔符进行分隔的,默认使用逗号作为分隔符。
var arr = [1,2,3];
console.log(arr.join()); // 1,2,3
console.log(arr.join("-")); // 1-2-3
console.log(arr); // [1, 2, 3](原数组不变)
通过join()方法可以实现重复字符串,只需传入字符串以及重复的次数,就能返回重复后的字符串,函数如下:
function repeatString(str, n) {
// 一个长度为(n+1)的空数组用string去拼接成字符串,就成了n个string的重复
return new Array(n + 1).join(str);
}
console.log(repeatString("abc", 3)); // abcabcabc
console.log(repeatString("Hi", 5)); // HiHiHiHiHi
2. push() 和 pop()
push() 方法从数组末尾向数组添加元素,可以添加一个或多个元素。
pop() 方法用于删除数组的最后一个元素并返回删除的元素。
两者都会改变原数组。
var arr = ["Lily","lucy","Tom"];
var count = arr.push("Jack","Sean");
console.log(count); // 5
console.log(arr); // ["Lily", "lucy", "Tom", "Jack", "Sean"]
var item = arr.pop();
console.log(item);