<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组方法</title>
</head>
<body>
<script>
//---------reverse、splice都会改变原数组----slice、concat、join不会改变原数组---------//
var arr = [0,1,2,3,4];
var arr2 = [0,1,2,3,4];
console.log(arr.length); //数组的长度
// console.log(arr.reverse()); //数组的反转,返回值:[4, 3, 2, 1, 0] 改变了原数组
console.log(arr.slice()); //将所有的元素都剪切出来,返回值:[0, 1, 2, 3, 4]
//相当于数组的复制,不改变原数组。
console.log(arr.slice(1)); //将所传参数到最后的元素都剪切出来,返回值:[1, 2, 3, 4]
//不改变原数组
console.log(arr.slice(1,3)); //截取数组的开始索引和结束索引,不包括结束索引元素 [1, 2]
console.log(arr.concat(5); //数组的连接,返回值:[0, 1, 2, 3, 4, 5] 不改变原数组
console.log(arr.join("")); //数组的连接转成字符串,返回值:01234 不改变原数组
// console.log(arr.splice(1)); //数组的删除,返回值:[1, 2, 3, 4] 改变原数组:[0]
// console.log(arr.splice(1,3)); //数组的删除,返回值:[1, 2, 3] 改变原数组:[0, 4]
console.log(arr.splice(1,3,1)); //数组的删除,(操作位置,删除个数,插入的元素)
//返回值:[1, 2, 3] 改变原数组:[0, 1, 4]
console.log(arr.indexOf(0)); //查找数组中的元素,若有返回 0;若没有返回 -1;
console.log(arr.indexOf(4,2)); //查找数组中的元素的索引,若有返回其索引;若没有返回 -1;
//如果有相同元素则只返回第一个查找到的元素的索引。
//---------push、pop、unshift、shift都会改变原数组---------------//
var arr1 = new Array("a","b","c"); //构造函数创建数组
console.log(arr1.push("d")); //在数组的最后添加一个元素,返回值:4
//添加元素之后数组元素的个数
console.log(arr1.pop()); //删除数组最后一个元素 ["a", "b", "c"]
console.log(arr1.unshift("A")); //在数组的前面添加一个元素,返回值:4
//添加元素之后数组元素的个数
console.log(arr1.shift()); //删除数组第一个元素,返回值:A
console.log(arr1.sort()); //将数组排序
//数组的去重
//方法1:
let arr3 = [1,2,3,4,4];
let set = new Set(arr3);
console.log(set);
//方法2:
let array = Array.from(set);
console.log(array);
//方法3:
var arr4 = [1,2,3,4,4]
function unique(array){
var n = [];
for (var i = 0; i < array.length; i++) {
if (n.indexOf(array[i])==-1) { //查找数组中的元素,若有返回 0;若没有返回 -1;
n.push(array[i])
}
}
return n;
}
console.log(unique(arr4)) //[1, 2, 3, 4]
//数组的去重(里面为对象)
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 2, name: "小李"},
{id: 3, name: "小孙"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];
let obj = {};
person = person.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
var obj = {
name:"xiaoMing",
sex:"nan",
age:[1,2,3]
}
for(var key in obj){
var val = obj[key]
//console.log(typeof val) //string string object
//console.log(val) //xiaoMing nan [1, 2, 3]
//console.log(key) //name sex age
}
</script>
</body>
</html>