【Javascript Day11】数组的内置方法、添加获取、元素查询及练习、排序方法数组的内置方法
数组的内置方法
// js 语法中所有的数据类型都是从对象演变而来的
var str = "abc";
console.log( typeof str, str.constructor ); // string
console.log( typeof str == "string" );
var user = {};
console.log( typeof user, user.constructor );
var arr = [1,2];
console.log( typeof arr ); // object
// 数组的创建方式
// 1. new Array();
// 2. 字面量 [ ]
console.log( arr );
判断变量是否为数组类型
// 方式1:比较构造器
// 变量.constructor 可以获取改变量的构造函数
console.log( arr.constructor , arr.constructor == Array );
// 方式2:使用 instanceof 比较构造器
// 语法: 变量 instanceof 构造函数
console.log( arr instanceof Array );
// 方式3:使用专用数组类型验证函数 Array.isArray( 变量 )
console.log( Array.isArray( arr ) );
数组的添加与获取
var names = ["鑫磊","明哲","航","嘉熙"];
console.log(names);
1. 获取指定元素
console.log( names[1] );
// 数组变量.at(num);
// num >=0 下标获取
// num <0 倒数获取
var item = names.at(1);
console.log( item );
console.log( names.at(-1) );
2. 末尾添加和末尾删除
var i = names.push( "荣轩" ); // 将新数据添加的数组的末尾,返回增加后的数组长度
console.log( i , names );
var temp = names.pop(); // 删除数组末尾的元素,返回被删除的元素
console.log( temp , names );
var tempArr = [];
var temp1 = tempArr.pop(); // 返回undefined 表示没有元素被删除 - 出现在原始数据就是空数组
console.log( temp1 );
3. 首位添加和首位删除
// !! 首位操作,对整个数组的元素下标产生影响
var namesA = ["鑫磊1","明哲1","航1","嘉熙1"];
console.log( namesA );
var j = namesA.unshift("博文"); // 将新数据增加到数组首位,返回增加后的数组长度
console.log(j , namesA);
var temp1 = namesA.shift(); // 删除数组首位的原始,返回被删除的元素值
console.log(temp1,namesA);
数组元素的查询
var names = [ "果","立辉","睿渊","俊驰","睿渊","昊天","越泽" ];
1. 数组变量.indexOf( 查找值 )
// 从下标0开始搜索,返回第一个等于查找值得元素下标,如果没有返回-1
var a = names.indexOf("睿渊")
console.log(a); // 2
var b = names.indexOf("豆豆")
console.log(b);
2. 数组变量.lastIndexOf( 查找值 )
// 从最后一个下标开始搜索,返回倒数时第一个等于查找值得元素下标,如果没有返回-1
var c = names.lastIndexOf("睿渊")
console.log(c); // 4
var d = names.lastIndexOf("豆豆")
console.log(d);
var nums = [21,13,32,56,47,33,31]
/*
3.find()
从下标0开始查找第一个符合条件得元素,并返回元素值,如果找不到返回undefined
数组变量.find( function(item,index,array){
// find 会循环 nums 数组,循环过程中每个元素都会执行一次回调
// item :每次执行该方式时元素值
// index :每次执行该方式时元素对应得下标
// array :被循环得数组
return true; // 表示当前循环得元素满足条件
return false; // 表示当前循环得元素不满足条件
} )
*/
var e = nums.find( function(item,index){
// return true;
// return false;
return item % 2 == 0;
} )
console.log(e);
4.findIndex(item,index,array)
从下标0开始查找第一个符合条件得元素,并返回下标,如果找不到返回-1
var f = nums.findIndex( function(item,index){
return item % 2 == 0;
// return false;
} )
console.log(f);
3.1 findLast(item,index,array)
从末尾开始查找第一个符合条件得元素,并返回元素值,如果找不到返回undefined
var h = nums.findLast( function(item){
return item%2==0;
} )
console.log(h);
4.1 findLastIndex(item,index,array)
从末尾开始查找第一个符合条件得元素,并返回下标,如果找不到返回-1
var j = nums.findLastIndex( function(item){
return item%2==0;
} )
console.log(j);
// 数组变量.includes( 查找值 ) 判断查找值在数组中是否存在,返回true|false
var flag = nums.includes( 99 );
console.log(flag);
数组查找练习
// 面试题:实现一个数组去重方法【你能实现几种数组去重方法】
// 编写一个方法,接收一个数组参数,方法返回一个不带有重复元素得新数组
// 实现对数组内重复元素得去重操作
Ⅰ indexOf方法
var names = ["熠彤","鹭洋","晋鹏","雨泽","伟泽","熠彤","鹭洋","晋鹏","涛","熠彤","鹭洋","晋鹏","立轩"]
// var newNames = ["熠彤","鹭洋","晋鹏","雨泽","伟泽","涛","立轩"]
function heavyArr(arr){
var newArr = [];
// 1. 对数组进行循环,依次获取每个元素
for (var i = 0; i < arr.length; i++) {
// 2. 判断 newArr 数组中是否存在当前循环到得元素值
// !!! indexOf 可以等效替换成其它查询方法,但比较逻辑需要修改
var index = newArr.indexOf( arr[i] );
if(index==-1){
// 3. 如果不存在,说明当前循环到元素在 newArr 中没有重复
// 将该元素添加到 newArr 中
newArr.push( arr[i] )
}
}
return newArr;
}
var arr = heavyArr( names );
console.log(arr);
var nums = [11,22,33,44,11,33,66,44,22];
var newNums = heavyArr( nums );
console.log(newNums);
Ⅱ find方法
function heavyArr2(arr){
var newArr = [];
for (var i = 0; i < arr.length; i++) {
var res = newArr.find( function(item){
// 对newArr 进行循环(遍历、迭代),判断newArr中是否包含 外面循环 arr 得元素值
return item == arr[i];
} );
if( res==undefined ){
newArr.push( arr[i] )
}
}
return newArr;
}
Ⅲ 纯for循环
var arr = ["睿渊","睿渊","果","立辉","睿渊","俊驰","昊天","越泽"];
var arr1 =[];
function quchong(arr){
arr1.push(arr[0])
end:for(i=1; i < arr.length; i++){
for( var j = 0; j < arr1.length; j++ ){
if(arr[i] == arr1[j]){
continue end;
}
}
arr1.push(arr[i])
}
}
quchong(arr);
console.log(arr1);
数组排序方法
var nums = [11,22,33,44,101,1,303,66,404,202];
数组变量.reverse() 数组元素反转方法
// + 返回反转后得数组
// + 该方法会直接改变操作数组,所以返回得数组其实就是操作得数组
// var newArr = nums.reverse();
// console.log("newArr:",newArr);
nums.reverse();
console.log("nums:",nums);
var nums1 = [11,22,33,44,101,1,303,66,404,202];
// 数组变量.toReversed() 数组元素反转方法
// + 返回一个全新得反转后得数组,不影响原始数组
var newArr1 = nums1.toReversed();
console.log("nums1:",nums1);
console.log("newArr1:",newArr1);
var nums2 = [11,22,33,44,101,1,303,66,404,202];
数组排序方法
// 数组变量.sort() 进行数组排序 ==> 不传递参数得情况下,是逐位比较
// + 返回排序后得数组结果
// + 该方法会直接改变操作数组,所以返回得数组其实就是操作得数组
var sortNums2 = nums2.sort()
console.log("nums2:",nums2 );
console.log("sortNums2:",sortNums2 );
var names = ["熠彤","鹭洋","晋鹏","雨泽","伟泽","涛","立轩"]
// sort 在不接收参数得情况下,可以对非数值进行排序操作 ==> 是逐位比较
names.sort();
console.log( names );
var nums3 = [11,22,33,44,101,1,303,66,404,202];
var sortNums3 = nums3.sort( function( a,b ){
// 通过返回 正值 表示不需要交换 a b
// 通过返回 负值 表示需要交换 a b
// return a-b; // 升
return b-a; // 降
} )
console.log("nums3:",nums3);
console.log("sortNums3:",sortNums3);
var nums4 = [11,22,33,44,101,1,303,66,404,202];
var sortNum4 = nums4.toSorted();
console.log("nums4",nums4);
console.log("sortNum4",sortNum4);
var sortNum5 = nums4.toSorted(function(a,b){
return a - b;
});
console.log("nums4",nums4);
console.log("sortNum5",sortNum5);
原文地址:https://blog.csdn.net/clp20031101/article/details/145229059
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!