Javascript 之 Array
let arr = ['a', 'b', 'c', 'd', 'e'];
// 截取数组
slice(start, end) // 从 start 位置开始截取到 end 位置(左闭右开取间),如果 start/end 为负值,则表示从数组的尾部开始, -1 代表最后一个元素
console.log(arr.slice(2, 4)); // ['c', 'd']
// 数组转为字符串
join(separator) // 用 separator 字符链接数组元素,并转为字符串,如果 separator 分割字符没有,默认是英文的逗号(,)
console.log(arr.join()); // a,b,c,d,e
console.log(arr.join('+')); // a+b+c+d+e
// 截取数组片段
splice(start, deleteCount, value, ...)
console.log(arr.splice(1, 2)); // ['b', 'c'] arr 为 ['a', 'd', 'e'] 截取数组片段,从 start 开始,截取 2 个元素
console.l0g(arr.splice(1, 0, 'f')); // [] 空数组 arr 为 ['a', 'f', 'b', 'c', 'd', 'e'] 如果 deleteCount 为零则表示添加
console.log(arr.splice(1)); // ['b', 'c', 'd', 'e'] 从 start 开始,一直截取到最后
// 颠倒数组元素的顺序
reverse()
console.log(arr.reverse()); // ['e', 'd', 'c', 'b', 'a']
// 数组元素的添加
concat(value, ...) // 往数组添加新的元素
console.log(arr.concat('f', 'g')); // ['a', 'b', 'c', 'd', 'e', 'f', 'g']
console.log(arr.concat(['f', 'g'])); // ['a', 'b', 'c', 'd', 'e', 'f', 'g']
console.log(arr.concat('f', ['g', ['o', 'p']])); // ['a', 'b', 'c', 'd', 'e', 'f', 'g', ['o', 'p']]
push(value, ...) // 在数组尾部添加一个或多个元素
console.log(arr.push('f', 'g')); // 返回数组的新长度, arr 为 ['a', 'b', 'c', 'd', 'e', 'f', 'g']
unshift(value, ...) // 在数组的头部添加一个或多个元素
console.log(arr.unshift('x', 'y')); // 返回数组的新长度, arr 为 ['x', 'y', 'a', 'b', 'c', 'd', 'e']
// 数组元素的删除
pop() // 移除并返回数组的最后一个元素
console.log(arr.pop()); // 'e' arr 为 ['a', 'b', 'c', 'd']
shift() // 移除并返回数组的第一个元素
console.log(arr.shift()); // 'a' arr 为 ['b', 'c', 'd', 'e']
// 在数组中查找元素
indexOf(value, start) // 在数组中查找 value 元素, start 为从什么位置开始找,是可选参数。如未找到返回 -1
console.log(arr.indexOf('c')); // 2
console.log(arr.indexOf('d', 2)); // 3
lastIndexOf(value, start) // 从后往前查找元素,从 start 位置开始(start 也是从后面开始计算位置),如果 start 没有,就是从最后开始,如未找到返回 -1
console.log(arr.lastIndexOf('c')); // 2
console.log(arr.lastIndexOf('d', 2)); // 3
toLocaleString() // 将数组转化为本地化字符串
toString() // 将数组转化为字符串
forEach() 遍历所有元素
var arr = [1, 2, 3];
arr.forEach(function (item, index) {
// 遍历数组的所有元素,item 表示元素的值, index 表示元素的位置
console.log(index, item);
})
// 0 1
// 1 2
// 2 3
编写一个通用的 forEach 函数,即可遍历数组,也可遍历对象
var arr = ['a', 'b', 'c'];
var obj = {x: 100, y: 200, z: 300};
forEach(arr, function (index, item) {
console.log(index, item);
});
forEach(obj, function (key, val) {
console.log(key, val);
})
function forEach (obj, fn) {
var key;
if (obj instanceof Array) {
obj.forEach(function (item, index) {
fn(index, item);
})
} else {
for (key in obj) {
if(obj.hasOwnProperty(key)) {
fn(key, obj[key]);
}
}
}
}
every 判断所有元素是否都符合条件
var arr = [1, 2 ,3];
var result = arr.every(function (item, index) {
// 用来判断所有的数组元素,都 满足一个条件
if (item < 4) {
return true
}
})
console.log(result); // true
some 判断是否有至少一个元素符合条件
var arr = [1, 2, 3];
var result = arr.some(function (item, index) {
// 用来判断所有的数组元素,只要有一个满足条件即可
if (item <2) {
return true;
}
})
console.log(result); // true
sort 数组排序
var arr = [1, 4, 5, 3, 2];
var arr2 = arr.sort(function (a, b) {
// 从小到大排序
return a - b;
// 从大到小排序
//return b - a;
})
console.log(arr2); // [1, 2, 3, 4, 5]
map 对元素重新组装,生成新的数组
var arr = [1, 2, 3];
var arr2 = arr.map(function (item, index) {
// 将数组重新组装
return '<b>' + item + '</b>';
})
console.log(arr2); // ['<b>1</b>', '<b>2</b>', <b>3</b>]
filter 过滤数组内符合条件的元素
var arr = [1, 2, 3];
var arr2 = arr.filter(function (item, index) {
// 通过某一个条件过滤数组
if (item >= 2) {
return true;
}
})
console.log(arr2); // [2, 3]
reduce(fn, inital) 从左到右的方式从数组元素中计算出一个值
var arr = [1, 2, 3];
var arr2 = arr.reduce(function (x, y) {
return x * y;
})
console.log(arr2); // (1*2)*3 = 6
var arr3 = arr.reduce(function (x, y) {
return x * y;
}, 4) // 如果 inital 有值,那它的行为会像是把该参数插入到 arr 的头部一样 arr = [4, 1, 2, 3]
console.log(arr3); // ((4*1)*2)*3 = 24
reduceRight(fn, inital) 从右到左的方式从数组元素中计算出一个值
var arr = [1, 2, 3];
var arr2 = arr.reduceRight(function (x, y) {
return x * y;
})
console.log(arr2); // (3*2)*1 = 6
var arr3 = arr.reduceRight(function (x, y) {
return x * y;
}, 4) // 如果 inital 有值,那它的行为会像是把该参数插入到 arr 的尾部一样, arr = [1, 2, 3, 4]
console.log(arr3); // ((4*3)*2)*1 = 24