创建数组
var arr = [1, 2, 3, 4];
console.log(arr)
var a = [1, "html", { "name": "cheng" }];
console.log(a)
二维数组
// 二维数组 数组里面套数组
var arr = [[1,2],[3,4]];
//arr[数组下标][数组中数组下标]
console.log(arr[0][1])//输出:2
console.log(arr[1][0])//输出:3
数组长度
var arr = ["html","css","javascript"];
console.log(arr.length);
// length-1
// 获取数组最后面的数据
console.log(arr[arr.length-1]);
数组的方法
Array.isArray
该
**Array.isArray()**
方法确定传递的值是否为Array
。
Array.isArray([1, 2, 3]); // true
Array.isArray({foo: 123}); // false
Array.isArray('foobar'); // false
Array.isArray(undefined); // false
数组的增,删,改,查
数组的添加
push(),unshift()
特点:
- 改变数组中数据;
- 可以添加一个值,也可添加多个值;
- 不能拼接数组。
var arr = [1,2,3];
arr.push(4);
arr.unshift(0)
console.log(arr);
//输出[0,1,2,3,4]
push()在数组最后添加
var arr = [1,2,3,4];
var b = [5,6,7,8];
arr.push(b);
console.log(arr);
unshift() 向数组前面添加
var arr = [1,2,3,4]; //[1,2,3,4,5,6,7]
var b = [5,6,7,8];
arr.unshift(b);
console.log(arr);
concat()
concat() 方法用于连接两个或多个数组。 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 arrayObject.concat(arrayX,arrayX,……,arrayX) arrayX:该参数可以是具体的值,也可以是数组对象
/* concat 不能改变数组结构*/
var arr = [1,2,3];
var c = [ 5,6,7]
var b = arr.concat(c);
console.log(arr);
console.log(b);
数组的删除
pop(),shift()
pop() 方法用于删除并返回数组的最后一个元素。 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
/*
pop --从末尾删除
shift --从前面删除
*/
var arr = [1,2,3,4];
arr.pop();
arr.shift();
console.log(arr)
//输出:[2,3]
splice() 增删改
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。 注释:该方法会改变原始数组。 arrayObject.splice(index,howmany,item1,…..,itemX)
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1, …, itemX 可选。向数组添加的新项目。
拼接splice( index 从下标,howmany删多少个)
var arr = [1,2,3,4,5];
arr.splice(2,2);
console.log(arr)
//输出:[1,2,5]
/* splice(index,howmany)
index 从哪个下标开始
howmany 删除多少个
*/
var arr = [1,2,3,4,5]; //[1,2,3,5];
arr.splice(3,1);
console.log(arr);
修改 arr[index] = num
var arr = [1,2,3,4,5]; //[1,2,7,4,5]
// arr[2] = 7;
// 修改splice(index,howmany,value);
/*
index 从哪个下标开始
howmany 删除多少个
value 插入的值(可以是多个值)
*/
arr.splice(2,1,7);
console.log(arr);
增
从下标前面放值
var arr = [1,2,3,4];
arr.splice(2,0,6,7)//输出[1,2,6,7,3,4] 从下标前面放值
console.log(arr)
…arr
数组的展开(解构)
var arr = [1,2,3,4];
console.log(arr);
console.log(...arr);
var a = [4,5,6];
var b = [7,8,9];
a.push(...b);
console.log(a)
//b.unshift(...a)
//console.log(b)
数组的查询
slice()
查询 slice(startIndex,endIndex)不包括endIndex (startIndex<=arr[i]<endIndex) 若没有endIndex,从start到最后
var arr = [1,2,3,4];
// arr[i]
/* indexOf --查询数组某个值的下标*/
// slice(startIndex,endIndex) 不包含endIndex
/* slice(startIndex) 截取从startIndex开始到后面所有的值 */
console.log(arr.indexOf(4));
console.log(arr.slice(1,3))
console.log(arr.slice(1))
includes()
返回Boolean值
var arr= [1,2,3,4]
console.log(arr.includes(5));//false 返回Boolean值
findIndex()
对数组执行遍历,查询对应值得下标
var arr = [1,2,3,2];
var index = arr.findIndex(item=>{
return item == 2;
})
console.log(index);
filter()
只要满足某个条件,返回数组
var arr = [1,2,3,4];
// var res = [];
// for(var i=0;i<arr.length;i++){
// if(arr[i]>2){
// res.push(arr[i]);
// }
// }
// console.log(res)
var res = arr.filter(item=>item>2);
console.log(res);
例子
var arr = [
{name:"小米",price:1999},
{name:"红米",price:999},
{name:"iphone",price:9999},
{name:"华为",price:3000},
]
/* price>1000
放到一个新的数组中
*/
var res = arr.filter(item=>item.price>1000);
console.log(res);
find()
返回满足它条件的第一个值
var arr = [1,5,3,4];
var value = arr.find(item=>{
return item>2;
})
console.log(value) //5
如果满足条件则返回那个值,如果不满足返回undfined
var arr=[1,2,3];
var value=arr.find(item=>item==2);
console.log(value) //2
join()
join() 方法用于把数组中的所有元素拼接成一个字符串。 元素是通过指定的分隔符进行分隔的。
/* join(seprate) 将数组拼接成字符串*/
var arr = ["html","css","javascript"];
console.log(arr.join());
console.log(arr.join(""))
console.log(arr.join("|"))
console.log(arr.join(" "))
<p id="p"></p>
<script>
var p = document.getElementById("p")
var arr = [1994,"犯罪","剧情"]
var str = arr.join("/")
p.innerHTML = str
console.log(str)
</script>
data+join
var data = {
country:"美国",
year:1994,
story:"犯罪"
}
console.log(data);//输出Object
/* 美国/1994/犯罪 */
var arr = []
for(var i in data){
console.log(i);//输出“:”前
console.log(data[i]);//输出“:”后
arr.push(data[i])
}
var str = arr.join("/");
console.log(str);
sort()
sort() 方法用于对数组的元素进行排序。按照字符编码的顺序进行排序。所以只能比较单个数。 按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数: 升序算法 arr.sort((a,b)=>{ return a-b; }) 降序算法 arr.sort((a,b)=>{ return b-a })
var arr = [3,2,7,15,1];
var res1 = arr.sort((a,b)=>{
return a-b;
})
console.log(res1)
var res2 = arr.sort((a,b)=>{
return b-a;
})
console.log(res2)
例:
var students = [
{name:"zhang",age:20},
{name:"li",age:18},
{name:"wang",age:9},
{name:"chen",age:14},
]
/*
根据年龄升序
根据年龄降序
*/
var result = students.sort((a,b)=>{
return a["age"]-b["age"]
})
console.log(result)
先封装再排序
<button id="like">通过好评数排序</button>
<button id="price">通过价格排序</button>
<script>
var like = document.getElementById("like");
var sales = [
{ name: "张三", like: 60, distance: 1000, price: 10 },
{ name: "张三", like: 30, distance: 100, price: 40 },
{ name: "张三", like: 20, distance: 500, price: 6 },
]
/* 升序 */
function addOrder(arr, value) {
if (Array.isArray(arr)) {
var res = arr.sort((a, b) => {
return a[value] - b[value];
})
return res;
}else{
return null;
}
}
like.onclick = function () {
console.log(addOrder(sales, "like"))
}
price.onclick = function () {
console.log(addOrder(sales, "price"))
}
</script>
数组求和
var arr = [1,2,3,4];
var sum = 0;
for(var i=0;i<arr.length;i++){
sum = sum + arr[i]
}
console.log(sum)//输出10
归并求和 reduce()
var arr = [1,2,3,4];
var sum = arr.reduce((a,b)=>{
return a+b;
})
console.log(sum)//输出10
console.log(arr)//不改变数组结构
取最大最小值
Math.max()
var arr = [1,2,3];
console.log(Math.max(12,1,2))//输出12
console.log(Math.max(...arr))//输出3
Math.min()
var arr = [4,2,6];
console.log(Math.min(...arr));//输出2
forEach() 遍历数组
var arr = [2,3,4,5];
arr.forEach((item,index)=>{
console.log(item+" "+index)
})
var…of… , map()
/* for-of for in */
var arr = [1,2,3];
for(var i of arr){
console.log(i)
}
// map 可以改变数组每一个项,得到一个新的值
var res = arr.map(item=>{
return item*2
})
console.log(arr);
console.log(res);
例1:
方法1
var arr = [
{name:"html",value:"12px"},
{name:"css",value:"13px"},
{name:"vue",value:"11px"},
]
/*
实现
var res = [
{name:"html",value:24},
{name:"css",value:26},
{name:"vue",value:22},
]
*/
arr.map(item=>{
var value = parseInt(item["value"])*2;
return item["value"] = value;
})
console.log(arr);
方法2
var arr = [
{name:"html",value:"12px"},
{name:"css",value:"13px"},
{name:"vue",value:"11px"},
]
var res = []
for( var key in arr){
console.log(key)
console.log(arr[key])
arr[key].value = parseInt(arr[key].value)*2;
res.push(arr[key]);
}
console.log(res);
例2:
var arr = [1,2,3];
/*
1.数组的每一项是基础(简单)类型,执行map不会改变数组原来的结构
2.数组的每一项是复杂类型{object},那么执行map方法会改变原来的数据结构
*/
var res = arr.map(item=>{
return item*3;
})
console.log(res);
console.log(arr);
var obj = [{name:"li",age:10},{name:"zhang",age:11}];
var result = obj.map(item=>{
return item.age = 0;
})
console.log(result);
console.log(obj)
some(),every()
some: 返回boolean 只要数组中有一项满足条件,就输出true every: 返回boolean 只有数组中每一项都满足条件,才输出true
var arr = [1,2,3,4];
var res = arr.some(item=>{
return item>2;
})
var b = arr.every(item=>item>2);
console.log(res)//true
console.log(b);//false
reverse()
reverse() 方法用于颠倒数组中元素的顺序。
var arr = ["html","css","javascript"]
console.log(arr.reverse()); // ["javascript","css","html"]