JS数组对象
什么是数组?
答:数组是一个列表形式的对象,用于存储逗号分隔的值。 这些值可以是任何值-字符串,数字,对象甚至函数。
数组:字面意思 数据的组合(分组)
数组对象:使用单独的变量命储存一系列的值,一个容器储存多个元素
数组项:元素 使用的符号[ ]
typeof 返回 object,和object类似,但是他的存储效率比普通对象高
单独声明变量 储存数据
var name1=“唐僧”;
var name2=“悟空”;
var name3=“悟净”
var name4=“悟能”;
使用数组将一系列的值进行储存
(aNames 中的a代表是数组类型的意思,中括号里可以放任意的数据)
示例:
var aNames=[唐僧"","悟空","悟净","悟能"];
var bai={
name:"白龙马1",
prop:"蹄朝西"
}
var bai2={
name:"白龙马2",
prop:"蹄朝西"
}
var bai3={
name:"白龙马3",
prop:"蹄朝西"
}
var aBais=[{
name
}
]
JS数组的创建
1.字面量 用一个[ ]来表示
var arr=[1,2,3,4,5];
console.log(arr);
2.常规方式 构造函数 new关键字
var arr2=new Arry();
// 添加数组项/元素
arr2[0]=“A”;
(计算机语言中一般从0开始,第0项代表日常生活中的第一项)
arr2[1]=“B”;
arr2[2]=“C”;
console.log(arr2);
3.简写
var arr3=new Arry(唐僧"",“悟空”,“悟净”,“悟能”);
console.log(arry3);
注意:如果 数组项为数字 且只有一个数组项 代表是数组项的个数
var arr4=new Arry(5);
console.log(arr4);
JS数组的访问
var arr3=new Arry(唐僧"",“悟空”,“悟净”,“悟能”);
console.log(arry3);
通过索引访问
索引:由0开始的整数 所有的数组都有索引
console.log(arr3[0]);
console.log(arr3[1]);
console.log(arr3[2]);
console.log(arr3[3]);
for循环 遍历数组的项
for(var i=0;i<4;i++){
console.log(arr3[i]);
}
JS数组添加项
通过索引 添加数组项
arr3[4]=“白龙马”;
console.log(arr3);
JS数组对象的属性
1-length: 设置或返回数组元素的个数
2-constructor: 返回创建数组对象的原型函数
3-prototype: 允许向数组对象(Array)添加属性或方法
可以通过下面两种方式创建一个数组 new和字面量两种方法
var arr=new Arry("唐僧","悟空","悟净","悟能");
var arr2=("唐僧","悟空","悟净","悟能","白龙马");
console.log(arr);
console.log(arr2);
-length: 设置或返回数组元素的个数
获取 length比数组最大索引+1
conslole.log(arr.length); // 4
conslole.log(arr2.length);// 5
设置 长度
arr.length=10;
console.log(arr);// 长度超过了原数组的长度 超出元素为undefined
arr2.length=3;
console.log(arr2);// 长度小于原数组的长度 删除超出部分的元素
var arr3=new Array();
arr3.length=10;
一般情况下不会去设置长度,而是获取长度
** constructor: 返回创建数组对象的原型函数**
通过 哪个函数 构造出来的 就返回哪个函数
-prototype: 允许向数组对象(Array)添加属性或方法
Array.prototype.name=“数组”;
var arrx=new Arry();
console.log(arrx.name);
之前的array数组中没有name属性 ,通过prototype现在添加了“数组”
JS数组对象的方法
例:
淘宝–>各种商品–>商品信息是储存在数据中的(图片、价格
标题、库存…)
一件商品
var product={
title:"耳机",
imgSrc:"http://......",
price:"5.5-9.9",
count:100;
}
多件商品
var products=[
{
title:"耳机",
imgSrc:"http://......",
price:"5.5-9.9",
count:100;
},{
title:"耳机",
imgSrc:"http://......",
price:"5.5-9.9",
count:100;
},{
title:"耳机",
imgSrc:"http://......",
price:"5.5-9.9",
count:100;
}
]
数组的方法:方法的作用 方法返回的结果
var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3=[“A”,“B”,“C”,“D”,“E”,“F”,“G”];
数组的方法, 方法的作用 方法返回的结果
concat() 连接两个或更多的数组,并返回结果
数组的拼接:console.log(arr1.concat(arr2,arr3)); // 返回的是一个新的数组
console.log(arr1);// 返回的是原数组 原数组不变 打印出的还是1,2,3
删除和添加
pop() 删除数组的最后一个元素并返回删除的元素
console.log(arr1.pop());// 3 返回了被删除的元素3
console.log(arr1);// {1,2} 改变了原数组
push() 向数组的末尾添加一个或更多元素,并返回新的长度
console.log(arr1.push(3)); //3
console.log(arr1.push(10,20,30)); //6 返回的是新数组的长度
console.log(arr1);// (6)[1,2,3,10,20,30] 改变了原数组
shift() 删除并返回数组的第一个元素
console.log(arr1.shift());// 1 返回删除的第一个元素
console.log(arr1); 返回的结果改变了原数组
unshift() 向数组的开头添加一个或更多元素,并返回新的长度
console.log(arr1.unshift(1,0)); // 7
console.log(arr1); // 返回的结果改变了原数组
slice(开始的索引,结束的索引) 选取数组的一部分并返回一个新的数组
(用来截取数组)通过开始和结束的索引,去截取中间的一部分
留头不留尾 从第一个开始截 到数字的前一个
console.log(arr1.slice(0,3));// [1,2,3] 截取数组
console.log(arr1);// 打印的原数组不变
splice(开始的索引,截取的长度,添加的元素) 从数组中添加或删除元素
console.log(arr1.splice(1,2)); // [2,3] 可以理解为删除
console.log(arr1.splice(0,3)); // [1,2,3]
console.log(arr1.splice(0,3,“A”,“B”,“C”)); //可以理解为添加 从之前删除的位置开始添加
console.log(arr1);// 改变了原数组
真正意义上的删除和添加,最后打印的结果都会改变原数组
搜索数组项的位置
indexOf被搜索的元素) 搜索数组中的元素,并返回它所在的位置
console.log(arr1.indexOf(1));// 0 返回0 是因为1在第0项的位置
console.log(arr1.indexOf("“w”"));// -1 因元素中没有w 搜索不到的、不存在的元素最后都会返回-1
var arr1=[1,2,3,1,2,3,1,2,3];
console.log(arr1.indexOf(3));// 2
如果元素中存在多个相同的元素,最后返回的会是元素第一次出现的位置 的所在长度
lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置
console.log(arr1.lastIndexOf(3)); // 8
console.log(arr1.lastIndexOf("“X”"));// -1 打印-1的原因同上
join() 把数组的所有元素放入一个字符串 --数组转为字符串
console.log(arr2.join());// 4,5,6
console.log(arr2); // (3)[4,5,6] 不改变原数组
split(转换的标识符) 将字符串转换为数组
var str=“hello”
console.log(str.split);// [‘hello’]
如果要将hello拆为单个的字母 split(" “)引号中间是空的 因原单词中间没有符号,如果有符号,引号中就写符号
即:console.log(str.split(”"));// [‘h’,‘e’,‘l’,‘l’,‘o’]
reverse() 反转数组的元素顺序
console.log(arr3.reverse());//[“G”,“F”,“E”,“D”,“C”,“B”,“A”]
console.log(arr3); // [“G”,“F”,“E”,“D”,“C”,“B”,“A”] 原数组改变了