您的位置:首页 > 其它

Array

2015-11-19 10:01 302 查看
创建数组

// 创建一个空数组
var arr1 = new Array();
var arr2 = Array();
var arr3 = [];

// 创建一个长度为5的数组,它包含5个undefined
var arr1 = new Array(5);
var arr2 = Array(5);

// 创建一个长度为3的数组,它的包含“red”,“blue”和“green”.
var arr1 = new Array('red', 'blue', 'green');
var arr2 = Array('red', 'blue', 'green');
var arr3 = ['red', 'blue', 'green'];


数组的长度

var arr = [1, 2, 3];

arr.length = 2;

arr  // [1, 2]

arr.length = 5;

arr  // [1, 2, undefined, undefined, undefined]


数组的检测

var arr = [1, 2, 3];

// 方法1
arr instanceof Array  // true

// 方法2 ECMAScript5 推荐
Array.isArray(arr)    // true


数组的转换方法

// 数组转换时,undefined为""

var person1 = {
    toLocaleString : function () {
        return "toLocaleString1";
    },
    toString : function() {
        return "toString1";
    }
};

var person2 = {
    toLocaleString : function () {
        return "toLocaleString2";
    },
    toString : function() {
        return "toString2";
    }
};

var people = [person1, person2];

people                  // toString1,toString2
people.valueOf()        // toString1,toString2
people.toString()       // toString1,toString2
people.toLocaleString() // toLocaleString1,toLocaleString2

people.join()      // toString1,toString2
people.join('||')  // toString1||toString2


栈方法

var arr = [0];

var n = arr.push(1, 2, 3);

arr  // [0, 1, 2, 3]
n    // 4

n = arr.push(4);

arr  // [0, 1, 2, 3, 4]
n    // 5

var i = arr.pop();

arr  // [0, 1, 2, 3]
i    // 4


队列方法

var arr = [0, 1, 2, 3];

var i = arr.shift();

arr  // [1, 2, 3]
i    // 0

var n = arr.unshift(4, 5);

arr // [4, 5, 1, 2, 3]
n   // 5



数组排序

var arr = [0, 1, 3, 2, 10];

// 反转原数组顺序
var re = arr.reverse();

arr  // [10, 2, 3, 1, 0]
re   // [10, 2, 3, 1, 0]

// 按toString()排序
var so = arr.sort();

arr  // [0, 1, 10, 2, 3]
so   // [0, 1, 10, 2, 3]

// 自定义排序方法 数值由小到大排序
arr.sort(function(a, b) {
  return a<b ? -1 : 1;
});

arr  // [0, 1, 2, 3, 10]

// 对于数值类型,数值由小到大排序 推荐方法
arr.sort(function(a, b) {
  return a-b;
});

arr  // [0, 1, 2, 3, 10


操作方法

// 数组合并
var arr1 = [0, 1, 2];
var arr2 = arr1.concat(3, [4, 5], [6, 7]);

arr1  // [0, 1, 2]
arr2  // [0, 1, 2, 3, 4, 5, 6, 7]

// 数组截取
var arr1 = [0, 1, 2, 3, 4, 5];
var arr2 = arr1.slice(1);
var arr3 = arr1.slice(1, 4);
var arr4 = arr1.slice(-4, -2);

arr1  // [0, 1, 2, 3, 4, 5]
arr2  // [1, 2, 3, 4, 5]
arr3  // [1, 2, 3]
arr4  // [2, 3]

// 万能大法 splice()
var arr1 = [0, 1, 2, 3, 4, 5];
var arr2 = arr1.splice(0, 2);      // 删除

arr1  // [2, 3, 4, 5]
arr2  // [0, 1]

arr1 = [0, 1, 2, 3, 4, 5];
arr2 = arr1.splice(2, 0, 7, 8, 9); // 插入

arr1  // [0, 1, 7, 8, 9, 2, 3, 4, 5]
arr2  // []

arr1 = [0, 1, 2, 3, 4, 5];
arr2 = arr1.splice(2, 2, 7, 8, 9); // 删除并插入

arr1  // [0, 1, 7, 8, 9, 4, 5]
arr2  // [2, 3]

arr1 = [0, 1, 2, 3, 4, 5];
arr2 = arr1.splice(-2, 2, 7, 8, 9); // 删除并插入2

arr1  // [0, 1, 2, 3, 7, 8, 9]
arr2  // [4, 5]


查询元素位置

var arr = ['a', 'b', 'c', 'd', 'c', 'b', 'a'];

arr.indexOf('c')         // 2
arr.lastIndexOf('c')     // 4

arr.indexOf('c', 3)      // 4
arr.lastIndexOf('c', 3)  // 2
arr.lastIndexOf('c', -5) // 2

// 查询用的是===比较
var person = { name: "Nicholas" };

var people = [{ name: "Nicholas" }];
var morePeople = [person];

people.indexOf(person)     // -1
morePeople.indexOf(person) // 0


数组迭代方法

/*
* 以下每个方法都接收两个参数:
*   1. 要在每一项上运行的函数
*       参数包括:当前元素,当前下标,原数组
*   2. (可选的)运行该函数的作用域对象——影响this的值
*/
var arr = [0, 1, 2, 3, 4, 5];

// 数组中任何元素都满足函数中的条件,返回true,否则返回false
var ev = arr.every(fun1);
ev  // false

// 数组中有元素满足函数中的条件,返回true,都不满足返回false
var so = arr.some(fun1);
so  // true

// 返回数组中满足函数条件的元素数组
var fi = arr.filter(fun1);
fi  // [4, 5]

// 返回数组所有元素运行函数后的结果
var ma = arr.map(fun2);
ma  // [0, 2, 4, 6, 8, 10]

// 相当于for循环,没有返回值
var fo = arr.forEach(fun2);
fo  // undefined

// 判断元素是否大于3
function fun1(item, index, array) {
  return item>3;
}

// 元素值 * 2
function fun2(item, index, array) {
  return item*2;
}


缩小方法(在我看来依旧是迭代方法~)

var arr = [0, 1, 2, 3, 4, 5];

// 从前向后迭代,返回最终结果
var re = arr.reduce(fun1);

console.log(re);
// prev=0 cur=1 index=1 arr=0,1,2,3,4,5
// prev=1 cur=2 index=2 arr=0,1,2,3,4,5
// prev=3 cur=3 index=3 arr=0,1,2,3,4,5
// prev=6 cur=4 index=4 arr=0,1,2,3,4,5
// prev=10 cur=5 index=5 arr=0,1,2,3,4,5
// 15

// 从后向前迭代,返回最终结果
var rr = arr.reduceRight(fun1);

console.log(rr);
// prev=5 cur=4 index=4 arr=0,1,2,3,4,5
// prev=9 cur=3 index=3 arr=0,1,2,3,4,5
// prev=12 cur=2 index=2 arr=0,1,2,3,4,5
// prev=14 cur=1 index=1 arr=0,1,2,3,4,5
// prev=15 cur=0 index=0 arr=0,1,2,3,4,5
// 15

// 参数(前一个值,当前值,下标,原数组)
function fun1(prev, cur, index, array) {
console.log('prev=' + prev + ' cur=' + cur + ' index=' + index + ' arr=' + array);
  return prev+cur;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Array