- 数组
- 数组 可以有序的存储一组数据,每个数据对应的有索引 可以根据索引访问数组中的数据
- 增加元素:开头arr.unshift()
- 末尾arr.push()
- 删除元素:开头arr.shift()
- 末尾arr.pop()
- 删除几位元素:arr.splice(1,2)//1开始。删除两位。
- 删除几位元素并插入:arr.splice(1,2,’w’,’e’)
- 将元素拼接成字符串:arr.join(‘—‘)//每两个元素之间都会出现拼接的符号
- 截取元素返回新数组:arr.slice(1,4)//相当于数学[1,4)
- 倒叙:arr.reverse()
- 合并数组:arr4.concat(arr5,arr6)
- 数组元素排序,返回排序之后的新数组
- 数组常用API
- 对象
数组
数组 可以有序的存储一组数据,每个数据对应的有索引 可以根据索引访问数组中的数据
1.可以根据索引**获取**数组中的数据<br /> 2.可以根据索引**修改**数组中的数据<br /> 3.可以根据索引在数组的**末尾添加**新数据<br /> 4.数组对象的属性:length 获取数组中元素的数量(数组的长度)<br /> 5.遍历数组
增加元素:开头arr.unshift()
末尾arr.push()
删除元素:开头arr.shift()
末尾arr.pop()
删除几位元素:arr.splice(1,2)//1开始。删除两位。
删除几位元素并插入:arr.splice(1,2,’w’,’e’)
将元素拼接成字符串:arr.join(‘—‘)//每两个元素之间都会出现拼接的符号
截取元素返回新数组:arr.slice(1,4)//相当于数学[1,4)
倒叙:arr.reverse()
合并数组:arr4.concat(arr5,arr6)
数组元素排序,返回排序之后的新数组
var arr7 = [12,5,14,3,2,54,28,36];<br /> var res4 = arr7.sort();<br /> console.log(res4);// 自定义排序规则 升序 降序<br /> var res5 = arr7.sort(function (a,b) {<br /> // a,b 表示数组中正在比较的两个元素<br /> if(a > b){<br /> return -1; //交换两个元素的位置<br /> }else{<br /> return 1; //不交换位置<br /> }<br /> });
<script>var arr = ['a','b','c','d'];// 1.增加新元素// 末尾追加arr.push("hello");// 开头追加arr.unshift("world")// 2.删除元素// 末尾删除arr.pop()// 开头删除arr.shift()// 3.删除、插入、替换// 从某个位置开始,删除几位// arr.splice(1,2)// 从某个位置开始,删除几位,并插入元素arr.splice(1,1,'e','f','g')console.log(arr);// 4.将数组中的元素拼接成字符串,返回拼接之后的字符串var arr2 = ['苹果','香蕉','葡萄'];// '苹果/香蕉/葡萄'var res1 = arr2.join('/');console.log(res1);// 5.截取数组中的元素,返回一个新数组var arr3 = [1,2,3,4,5,6];// 从哪开始,到哪结束(包含开始,不包含结束)var res2 = arr3.slice(1,4);console.log(res2);// 6.颠倒数组中元素的排列循序,返回一个新数组var res3 = arr3.reverse();console.log(res3);// 7.合并数组,返回合并之后的数组var arr4 = ['a','b'],arr5 = ['c','d'],arr6 = ['e','f'];var maxArr = arr4.concat(arr5,arr6);console.log(maxArr);// 8.数组元素排序,返回排序之后的新数组var arr7 = [12,5,14,3,2,54,28,36];var res4 = arr7.sort();console.log(res4);// 自定义排序规则 升序 降序var res5 = arr7.sort(function (a,b) {// a,b 表示数组中正在比较的两个元素if(a > b){return -1; //交换两个元素的位置}else{return 1; //不交换位置}});console.log(res5);// 例子 按照价格排序var goodList = [{name:"苹果",price:3.99},{name:"香蕉",price:2.99},{name:"橘子",price:5},{name:"葡萄",price:6.99},{name:"西瓜",price:2.58},{name:"李子",price:2.78},]// 降序var goodList2 = goodList.sort(function (item1,item2) {if (item1.price > item2.price) {return -1; //不交换位置}else{return 1; //交换位置}});console.log(goodList2);</script>
数组常用API
Array.from(arrLike,callback):转换成数组
把一个类似数组的数据转换为真正的数组,返回转换后的新数组也可以对返回的新数组进行二次操作,具体操作方式可以写在第二个参数中Array.from(arrLike,function(ele,i){}),ele是返回的数组元素,i是索引
这也是一个回调函数,用来操作每个元素,将处理好的元素值放到一个新数组中
forEach(): 遍历数组
arr1.forEach(function(ele,i,array){})只能遍历数组arr1,回调函数的三个参数的意义 ele是返回的数组元素,i是索引,数组本身;这三个参数使用写,不使用可以不写,具体的操作写在回调函数中,比如绑定个点击事件。
map(callback): 映射
改变
对数组中的每一个元素运行指定操作,返回操作之后的结果,返回一个新数组,
newArr=arr1.map(function(ele,i){return ele+i})
filter(callback)
过滤,筛选满足指定条件的元素,并返回一个数组
这是一个静态的方法,只能通过构造函数去访问
var arr2 = [5,16,3,26,8,9,10,4,17];
newArr = arr2.filter(function(ele){
return ele > 10
});
console.log(newArr);
some(callback)
判断是否存在满足指定条件的元素(无改变,过滤筛选),返回布尔值
var result = arr2.some(function(ele){
return ele.score < 60
});
console.log(result);
find()
findIndex()
返回第一个满足条件索引
result = arr2.find(function(ele){});
console.log(result);
includes()
判断数组中是否包含某个元素,返回布尔值
arr.includes(XXX)
<body><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><script>var lis = document.getElementsByTagName('li');console.log(lis);// 1. Array.from(arrLike,callback) :把一个类数组转换为真正的数组,返回转换之后的新数组。var arr_lis = Array.from(lis);console.log(arr instanceof Array);// 回到函数:用来操作每个元素,将处理好的元素值放在一个新数组中var str = 'abcdeg';var arr = Array.from(str,function(ele,i){// console.log(ele,i);return ele + (i+1)})console.log(arr);// 2. forEach(callback) 遍历数组var arr1 = ['a','b','c'];arr1.forEach(function(ele,i,array){console.log(ele,i,array);})arr_lis.forEach(function(ele,i){ele.onclick = function(){this.style.color = 'red'}})// 3. map(callback) 映射// 对数组中的每一个元素运行指定的操作,返回每次操作之后的结果,并将其组成一个新数组。var newArr = arr1.map(function(ele,i){return ele + i});console.log(newArr);// 4.filter(callback)// 过滤、筛选数组中满足指定条件的元素,并返回一个新数组var arr2 = [5,16,3,26,8,9,10,4,17];newArr = arr2.filter(function(ele){return ele > 10});console.log(newArr);arr2 = ['王五','张三','王二麻子','李四','王小二'];newArr = arr2.filter(function(ele){var reg = /^王/;return reg.test(ele)});console.log(newArr);arr2 = [{name:'张三1',score:78},{name:'张三2',score:56},{name:'张三3',score:99},{name:'张三4',score:16},{name:'张三5',score:61}];newArr = arr2.filter(function(ele){return ele.score > 60;});// some(callback)// 判断数组中是否存在满足指定条件的元素,返回布尔值var result = arr2.some(function(ele){return ele.score < 60});console.log(result);// find() 查找第一个满足条件的元素// findIndex() 查找第一个满足条件的元素索引。result = arr2.find(function(ele){return ele.score < 60});console.log(result);// includes() 判断数组中是否包含某个元素。var arr3 = [1,2,3,4,5];console.log(arr3.includes(5));</script></body></html>
对象
对象:以键值对形式存储数据
取值采用打点的方式
修改属性值直接重新赋值
新增属性也是直接打点赋值
对象的方法
<script>// 函数 方法// 对象 属性:描述对象的静态特征 方法:表示对象的动态行为var person = {name: "张三",age:18,isMale:true,// 对象的方法speak:function(lang){alert(lang);}}// 打点// person.name// 调用对象的方法person.speak("中文");// 数组对象的方法var arr = [1,2,3]// arr.pop()var str = arr.join('-');console.log(str);console.log(typeof str);</script>
遍历for in
// 遍历对象 for in// const 声明常量的关键字for (var key in car) {// 变量 key 指代的是对象中的 键console.log(key);console.log(typeof key);console.log('-----------');// 根据 键 取 值,在这里中能采用 [] 的方式// console.log(car[key]);// car.key 不能采用 打点的形式// console.log(car.key); //undefined}
统计数组中元素的出现次数
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>/*统计的过程中会出现两种情况:1.元素首次出现,在对象中新增一个属性,值1;2.元素不是首次出现,在原本的基础上,值+1.*/var arr = ['a','d','y','d','y','e','a','y'];var obj = {}; //准备一个空对象// 开始统计for(var i=0;i<arr.length;i++){var item = arr[i];// 如何判断该元素是否是首次出现// =>判断 对象中是否存在 某个属性(数组中是否存在某个元素)var flag = false;// 银针for(var key in obj){if (key == item) { //证明对象中存在该属性flag = true;break;}}if (flag == false) { //对象中不存在某属性 (首次出现)obj[item] = 1; //给对象新增属性,属性值:1} else {// 对象中存在某个属性(不是首次出现)obj[item] = obj[item] + 1; //获取属性值后,在原来的基础上+1}}console.log(obj);</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>// 统计结果:{a:2,b:1}// 变形-统计结果:[{code:"a",count:2},{code:"b",count:1}]var arr = ['a','s','d','e','s','a','e','s'];var resArr = []; //用来存放统计结果// 开始统计for(var i=0;i<arr.length;i++){var item = arr[i];// 判断 当前元素item是否在resArr中出现过var flag = false; //银针的初始状态for(var j=0;j<resArr.length;j++){if(item == resArr[j].code){flag = true;// 不是首次出现// resArr[j].count++break;}}if(flag == false){// 首次出现// 往数组中新增元素???// resArr[resArr.length] = {code:item,count:1}resArr.push({code:item,count:1})}else{// 不是首次出现resArr[j].count++;}}console.log(resArr);// 排序sort 方法是在原来数组的基础上进行修改,返回修改之后的数组。resArr.sort(function (a,b) {if (a.count < b.count) {return 1; //交换位置} else {return -1; //不交换位置}});console.log(resArr);</script></body></html>
产生几个不重复的随机数
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>var arr = [0,1,2,3,4,5,6,7,8,9,'a','b','d','e','f','j'];// 1. 随机 索引// 2. 不重复// 3. 6个数for(var i=0;i<6;i++){// 1.产生一个随机数 [0 arr.legnth-1]var randomNum = Math.ceil(Math.random()*(arr.length - 1));// 把随机数作为索引,从arr中取元素var item = arr[randomNum];document.write(`<span>${item}</span>`)// 2.不重复,将已经取过的元素从数组中删除arr.splice(randomNum,1)}// 产生 0-9之间 6个不重复的随机数var arr1 = []while(arr1.length != 6){// 1.产生0-9之间的随机数var randomNum = Math.floor(Math.random()*10);// 2.判断 此次产生的随机数是否在数组中存在var flag = false;for(var i=0;i<arr1.length;i++){if(randomNum == arr1[i]){flag = true;break;}}if(flag == false){arr1.push(randomNum);}}console.log(arr1);</script></body></html>
数组的对象中的字段进行去重,再对某些属性值累加(合并相同项,并对其他字段进行累加)
let newArray = this.list.reduce((a, b, index) => {//type是合并的相同字段,allmoney是需要进行累加的字段let hasValue = a.findIndex(r => {return r.type === b.type})hasValue === -1 && a.push(b)hasValue !== -1 && (a[hasValue].allmoney = a[hasValue].allmoney + b.allmoney)return a}, [])console.log("合并累加后",newArray)this.xList = newArray.map(item => {return item.type})console.log("合并累加后x",this.xList)this.yList = newArray.map(item => {return item.allmoney})
