js 数组中的常用事件
var oldArray = [{
name: "李晨",
age: 21
}, {
name: "王晓",
age: 22
}, {
name: "赵四",
age: 23
}];
目录
1.添加
push()——在数组末尾添加新元素
oldArray.push({
name: "商心",
age: 25
});
unshift()——在数组开头添加新元素
oldArray.unshift({
name: "商心",
age: 25
});
2.删除
delete——删除之后数组长度不变,删除位置的值为undefined
delete oldArray[1];
splice()——删除指定位置置顶长度元素
第一个参数(1)定义了应添加新元素的位置(拼接)。
第二个参数(1)定义应删除多少元素。
oldArray.splice(1, 1);
function removeItem(arr,item){
if(arr.length){
var index = arr.indexOf(item);
if(index>-1){
return arr.splice(index,1)
}
}
}
console.log(arr);
pop() ——从数组中删除最后一个元素
oldArray.pop()
shift() ——删除首个数组元素
oldArray.shift()
3.合并
concat()——合并两个数组为一个新数组,但是不改变原来数组
var newArray = [{
name: "张青",
old: "19"
}];
4.把数组转换为字符串
toString()——把数组转换为字符串
fruits.toString()
JSON.stringify()
JSON.stringify(oldArray)
5.排序
sort()——以字母顺序对数组进行排序
reverse()——以降序对数组进行排序
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b) {
return a - b
});
points.sort(function(a, b) {
return b - a
});
排序数组对象
oldArray.sort(function(a, b) {
return b.age - a.age
});
6.数组去重
var arr = ["上午", "上午", "晚上", "上午", "下午", "凌晨", "下午"];
方法1
Array.from(new Set(arrr));//ES6
方法2
var finalArray = [arr[0]]; //结果数组
for (var j = 1; j < arr.length; j++) //从第二项开始遍历
{
if (arr.indexOf(arr[j]) == j) {
finalArray.push(arr[j]);
}
}
方法3
Array.prototype.unique2 = function() {
var hash = {}; //定义一个hash表
var newArray = []; //定义一个新数组
for (var i = 0; i < this.length; i++) {
if (!hash[this[i]]) {
hash[this[i]] = true;
newArray.push(this[i]);
}
}
return newArray;
}
console.log(arr.unique2());
数组对象去重
//数组去重 arr=数组,name=某属性
function unique(arr, name) {
var hash = {};
return arr.reduce(function (item, next) {
hash[next[name]] ? '' : hash[next[name]] = true && item.push(next);
return item;
}, []);
}
7.判断是不是数组
let arr = ['1', '2']
7.1.Object.prototype.toString.call()
每个继承 Object
的对象都有 toString
方法,如果没有被重写,则返回 [object xxx]
,其中的 xxx
是对象的类型。但是除了 Object
类型之外,其他的类型的 toString 方法,会直接返回内容的字符串。所以使用 call
或者 apply
方法改变 toString
的执行上下文。
Object.prototype.toString.call(arr) //"[object Array]"
7.2.instanceof
通过判断对象的原型链中是否能找到 prototype。
arr instanceof Array // true
// 注意:所有的对象类型 intanceof Object 都是 true。
7.3.Array.isArray()
此方法是 ES5 中增加的。
arr.isArray([]) // true