-
-
- 基本数据类型都存储在栈区域
-
-
-
- 复杂数据类型存储在堆区域.赋值是将对象在堆区域
-
-
-
- 地址赋值给变量
-
数组常用方法
var arr=[10,20,30]
1.push
语法: arr.push() // 在数组arr中添加元素,括号里为要添加的元素,添加的位置为arr数组末尾.
2. pop
语法: arr.pop() //在数组arr弹出最后一个元素.
3. .unshift
语法: arr.unshift() //在数组头部添加元素
4.shift
语法: arr.shift() //弹出数组头部元素
5.splice(索引号,元素个数)
语法: arr.splice(1,2) //删除arr从索引号1开始的两个元素,也可以用splice在截取之后的元素索引号处添加新元素,语法如下
arr.splice(索引号,元素个数,'要添加的元素')
如果括号里只有一个元素,则表示截取这个序列号之后的元素形成一个新数组;如果括号里有两个元素,第二个元素则为结束的序列号,但新数组不包含结束序列号的元素(前包后不包)
6.reverse (): 反转数组
arr.reverse()====>
7.sort() :数组排序,排序默认由低到高,排序规则:按照字符编码unicode码. 可以在括号里添加排序规则(传参),如:
arr.sort(function) //括号里参数一般为一个函数
8. concat() :拼接数组
9.join('+') :把数组里的元素拼接为字符串 括号里为元素之间的连接
11.indexOf 获取数组中元素的索引号,括号里为数组中的元素,返回值为索引号(可用来判断元素是否存在,不存在,返回值
12.includes 判断数组元素是否存在,返回值为布尔值
数组遍历方法
1.forEach
匿名函数
arr.forEach(function(item/index)){
// 第一个形参 item 数组元素
// 第二个形参 index 索引号
}
2. map :遍历数组,映射一个新数组
var newarr=arr.map(function(item,)){
return item-10 //返回一个新数组(原数组-10)
}
3. filter 与map使用方法类似,按照我们的条件来删选数组
var newarr=arr.filter(function(item,)){
return item>10 //return一个新数组,满足条件的元素将其加入到newarr中
}
4.Find 查找满足条件的第一个元素
var newItem=arr.find(function(item)){
return item<10 //查找小于10的元素,返回值为这个元素
}
5. every :遍历数组,查找数组元素是否全部满足条件,满足返回true,不满足返回false
//判断是都所有学生成绩都合格
var arr=[98,90,80,60,50,77]
function testEvery(){
var isOk=arr.every(function(item)){
return item>60
}
}
6. some : 查找是否有一个满足条件,有返回true ,没有返回false
function testSome(){
arr
}
7.reduce
reduce(function(
数组的排序
1.冒泡排序:相邻两个数两两比较,如果前面的数大与后面的数,就交换位置,第一轮比较结束后,在数组最末尾得到最大的数; 依次重复操作
2.选择排序 : 每次循环找到最小值,与第一个元素的序号进行交换
1,n个数,进行n-1个选择,
2,每次选择 未排序数中找最小数下标,与前面的数交换位置
var arr=[1,4,5,7,2,3]
var n=arr.length
var mainIndex=i
for(var j= i+1;j<n;j++){
}
3. 数组去重
方法1:
1.定义一个空数组 ,存储去重后元素 2.遍历原数组 ,判断新数组中是否有原数组元素,如果没有,则存储到新数组中(用到for循环,indexOf,push)
function testIndexOf()
{ var arr = [9, 2, 5, 2, 8, 2, 5]
var newArr = [] //1.存储去重后元素
// 2. 遍历原数组 for (var i = 0; i < arr.length; i++) {
// 3. 判断新数组 中是否有原数组当前元素,如果没有,存储到新数组中
//
if(newArr.indexOf(arr[i]) == -1){
// newArr.push(arr[i]) // } //
if(newArr.includes(arr[i]) == false){
if (!newArr.includes(arr[i])){
newArr.push(arr[i]) }
}
console.log(newArr)
}
方法2:
利用双重for循环+splice实现 内层循环以此判断后面元素是否与外层元素相同,如果相同,就截取掉.
function test3() {
var arr = [2, 2, 2, 5, 2, 8, 2, 5]
// 0 1 2 3 4 5
// [2, 2, 5, 2, 8, 2, 5]
// 2
for (var i = 0; i < arr.length; i++) {
var item = arr[i] // 外层循环元素
for (var j = i + 1; j < arr.length; j++) {
if(item == arr[j]){
arr.splice(j,1)
j--
}
}
}
console.log(arr)
}
test3()