1. 数组对象是用来在单独的变量名中存储一系列的值
var a = [2,6,1];
var b = a;
var c = a.sort();
// b = ?
//实现数组的复制 ====> var b = [].concat(a)
2. 删除数组中的重复对象
var a = [
{ name: 1, age: 12 },
{ obj: 2, age: 1, name: 1 },
{ name: 2, age: 2 }
]
Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1); //params1 代表下标,params2 代表要删除几个元素
}
};
var uniqueObj = function (obj) {
for (var i = 0; i < obj.length; i++) {
var count = 0;
for (var j = 0; j < obj.length; j++) {
if (obj[i].name == obj[j].name) {
count++;
}
if (obj[i].name == obj[j].name) {
if (count > 1) {
obj.remove(obj[i]);
}
}
}
}
return obj;
}
console.log(uniqueObj(a))
3. 删除数组中的重复元素
var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
function unique(arr){
// 遍历arr,把元素分别放入tmp数组(不存在才放)
var tmp = new Array();
for(var i in arr){
//该元素在tmp内部不存在才允许追加
if(tmp.indexOf(arr[i])==-1){
tmp.push(arr[i]);
}
}
return tmp;
}
//使用Set, es6新增的一种数据结构,它和数组非常相似,但是成员的值都是唯一的,没有重复的值,
//但是不能删除重复对象,因为Set判断元素是否重复的办法类似于===运算符,两个对象总是不相等的
const arr = [1, 1, 2, 2, 3, 4, 5, 5]
const newArr = [...new Set(arr)]
console.log(newArr)
// [1, 2, 3, 4, 5] 分析:对于一个一维数组,我们可以先把它转化成Set,再配合...解构运算符重新转化为数组
//1.add(value):添加某个值,返回Set结构本身。
//2.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
//3. has(value):返回一个布尔值,表示该值是否为Set的成员。
//4 .clear():清除所有成员,没有返回值。
//删除数组中的元素
Array.prototype.remove = function (v) {
var set = new Set(this)
set.delete(v)
return [...set]
}
var arr = [1, 2, 3]
arr.remove(2)
// [1, 3]
4. 数组常见操作
var arr = [1, 2, 3, 4, 5];
//删除并返回数组中第一个元素
var theFirst = arr.shift();
alert(theFirst);//返回1 number
alert(arr);//2,3,4,5 object
//删除并返回数组中最后一个元素
var theLast = arr.pop();
alert(theLast);//返回5 number
alert(arr);//2,3,4 object
//在数组开始增加一个或多个元素,并返回数组长度
var theNewArrStart = arr.unshift(-1, 0);
alert(theNewArrStart);//返回5 number
alert(arr);//-1,0,2,3,4 object
//在数组结尾增加一个或多个元素,并返回数组长度
var theNewArrEnd = arr.push(5, 6);
alert(theNewArrEnd);//返回7 number
alert(arr);//-1,0,2,3,4,5,6 object
//从第i(数组索引)个位置删除n个元素
arr.splice(1, 2);
alert(arr);//-1,3,4,5,6 object
//从第i(数组索引)个位置删除n个元素,并插入s个新元素
arr.splice(1, 2, 10, 11, 12);
alert(arr);//-1,10,11,12,5,6 object
//合并2个或多个数组(concat中的参数可以为单个的值,也可以为数组,并且可以有多个值或数组)
var arr1 = [7, 8];
var arrCon = arr.concat(arr1);
alert(arrCon);//-1,10,11,12,5,6,7,8 object
//将数组中的元素使用特定的字符分隔,并返回字符串(如果不设置特定分割字符,则默认为逗号)
var theSep = arrCon.join('-');
alert(theSep);//-1-10-11-12-5-6-7-8 string
//点到数组中元素的顺序
var theRev = arrCon.reverse();
alert(theRev);//8,7,6,5,12,11,10,-1