IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript进阶九(内置对象二数组对象与字符串对象) -> 正文阅读

[JavaScript知识库]JavaScript进阶九(内置对象二数组对象与字符串对象)

一、数组对象

1、创建数组

(1)字面量创建

var arr = [1,2,3];

(2)利用new Array()创建

var arr = new Array(2)//表示数组的长度为2,里面有两个空的数组元素
var arr1 = new Array(2,3)//表示数组[2,3],里面有两个数组元素2与3

2、检测是否为数组

(1)instanceof运算符,用来检测是否为数组。

var arr = [1,2,3];
var arr1 = 'hah';
var obj = {};
console.log(arr instanceof Array);
console.log(arr1 instanceof Array);
console.log(obj instanceof Array);
//输出为:
true
false
false

(2)Array.isArray(参数),它是H5新增的方法,IE9以上版本支持。

var arr = [1,2,3]
console.log(Array.isArray(arr));
//输出为:
true

(3)举例
翻转一个数组,此时必须保证输入的是数组才可以执行翻转程序,否则输出这个参数必须是数组格式的提示。

function reverse(arr){
    if(arr instanceof Array){
        var newArr = [];
        for(var i = arr.length-1;i >= 0;i--){
            newArr[newArr.length] = arr[i];
        }
        return newArr;
    }else{
        return "error 参数必须是数组格式";
    }
}
console.log(reverse([1,2,3,4,5]));
console.log(reverse(1,2,3));
//输出为:
[ 5, 4, 3, 2, 1 ]
error 参数必须是数组格式

3、添加删除数组元素的方法

方法名说明返回值
push(参数1,…)末尾添加一个或多个元素,修改原数组返回新的长度
pop()删除数组最后一个元素,把数组长度减1,无参数,修改原数组返回它删除的元素的值
unshift(参数1,…)向数组的开头添加一个或更多元素,修改原数组返回新的长度
shift()删除数组的第一个元素,数组长度减1,无参数,修改原数组返回第一个元素的值

(1)添加数组元素

基本格式为:

数组名.push(参数1,...);
数组名.unshift(参数1,...)

举例如下;

//1、在数组末尾添加一个或多个数组元素
var arr = [1,2,3];
//arr.push(4,5,6,'haha');
console.log(arr.push(4,5,6,'haha'));
//输出为7,push完毕后返回的是新数组的长度
console.log(arr);
//输出为:[ 1, 2, 3, 4, 5, 6, 'haha' ]


//2、在数组开头添加一个或多个元素
var arr = [1,2,3];
console.log(arr.unshift(4,5,'haha'));
//输出为6,unshift完毕后返回的是新数组的长度
console.log(arr);
//输出为:[ 4, 5, 'haha', 1, 2, 3 ]

(2)删除数组元素

基本格式为:

数组名.pop();
数组名.shift();

举例如下;

//数组名.pop()删除数组的最后一个元素,一次只能删除一个元素
var arr = [1,2,3];
console.log(arr.pop());
//输出为3,它的返回值是删除的元素
console.log(arr);
//输出为[1,2]

//数组名.shift()删除数组的第一个元素,一次只能删除一个元素
var arr = [1,2,3];
console.log(arr.shift());
//输出为1,返回的是删除的元素
console.log(arr);
//输出为;[2,3]

案例

有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新的数组里。

var arr = [1500,1200,2000,2100,1800];
var newArr = [];
for(var i = 0;i < arr.length;i++){
    if(arr[i] < 2000){
        newArr.push(arr[i]);
    }
}
console.log(newArr);
//输出为:
[ 1500, 1200, 1800 ]

也可以利用数组遍历的for of方法实现我们需要的功能。

var arr = [1500,1200,2000,2100,1800];
var a = [];
for(var k of arr){
    if(k < 2000){
        a.push(k)
    }
}
console.log(a);
//输出为:
[ 1500, 1200, 1800 ]

4、数组排序

方法名说明是否修改原数组
reverse()颠倒数组中元素的顺序,无参数会改变原来的数组,返回新数组
sort()对数组的元素进行排序会改变原来的数组,返回新数组

基本格式为:

数组名.reverse();
数组名.sort();

举例如下;

//翻转数组
var arr = [1,2,3,4];
arr.reverse();
console.log(arr);//输出为:[ 4, 3, 2, 1 ]

//数组排序(冒泡排序)
var arr = [1,2,1,3,43,0,98,13];
arr.sort();
console.log(arr);
//输出为:[ 0, 1, 1, 13, 2, 3, 43, 98 ],sort在面对个位数时,可以完美的排序,但是如果遇到两位数,它会把第一位相同的数字排在一起,就不能实现排序功能了

//可以改为如下代码:
var arr = [1,2,1,3,43,0,98,130,132];
arr.sort(function(a,b){
    //return a - b;//升序的顺序排列
    return b - a;//降序的顺序排列
});
console.log(arr);
//输出为:
//[ 132, 130, 98, 43, 3, 2, 1, 1, 0 ] 

5、数组索引

方法名说明返回值
indexOf()数组中查找给定元素的第一个索引如果存在返回索引号,如果不存在,则返回-1
lastindexOf()在数组中的最后一个的索引如果存在返回索引号,如果不存在,则返回-1

注:默认都是从指定数组索引的位置开始检索,并且检索方式与运算符“===”相同,即只有全等时才会返回比较成功的结果。
举例如下:

var arr = [1,2,1,3,4,1,5];
console.log(arr.indexOf(1));//结果为0,返回的是第一个该元素的索引号
console.log(arr.lastIndexOf(1));//结果为5,返回的是最后一个该元素的索引号
console.log(arr.indexOf(1000));//如果不存在该元素,会返回-1
console.log(arr.lastIndexOf(1000));//如果不存在该元素,会返回-1

案例

去除重复数组元素。
核心原理:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组中没有出现过,就添加,有就不添加。可以利用indexOf(),如果它返回的是-1,代表新数组里没有该元素,把它添加进新数组就好。

//封装一个去重的函数
function unique(arr){
    var newArr = [];
    for(let i = 0;i < arr.length;i++){
        if(newArr.indexOf(arr[i]) === -1){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
var arr = [1,2,4,2,3,1,5,4,5,5,7];
console.log(unique(arr));
//输出为:
//[ 1, 2, 4, 3, 5, 7 ]

6、数组转换为字符串

方法名说明返回值
toString()把数组转换为字符串,逗号分隔每一项返回一个字符串
join(‘分隔符’)用于把数组中的所有元素转换成一个字符串返回一个字符串

举例如下:

//数组转换为字符串
var arr = [1,2,3];
console.log(arr.toString());
//输出结果:1,2,3
console.log(arr.join());
console.log(arr.join(''));
console.log(arr.join('-'));
//输出为:
//1,2,3
//123
//1-2-3

7、数组的遍历

数组的遍历我们以前已经学过,今天学习一个新的方法。

数组名.map(function(t){
	console.log(t)
})

举例:

var arr = [1,2,3,4];
arr.map(function(t){
    console.log(t);
});
//输出为:
1
2
3
4

二、字符串对象

1、字符串的创建

(1)直接创建

var str = 'hahhah';

(2)使用new String()来创建,在String构造函数中传入字符串,这样就会在返回的字符串对象中保存这个字符串。

var str = new String('apple');

2、字符串的长度属性

字符串.length,如:

var str = new String('apple');
console.log(str.length);//结果为5

3、字符串的不可变性

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间,因为我们字符串的不可变,所以不要大量的拼接字符串。

4、根据字符返回位置

字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。

方法名说明
indexOf(‘要查找的字符’,开始的位置)返回指定内容在原字符串中的位置,如果找不到就返回-1,开始的位置是index索引号
lastindexOf()从后往前找,只找第一个匹配的
//str.indexOf('要查找的字符',[起始的位置])
//str.lastindexOf()
var str = 'hahahah';
console.log(str.indexOf('a'));
console.log(str.indexOf('a',[2]));//意思是从索引号为2开始往后查找
console.log(str.indexOf('a',4));
console.log(str.lastIndexOf('a'));
//结果为:
1
3
5
5

举例如下:查找字符串“ojuoojoo”中所有o出现的位置及次数
思路:
(1)先查找第一个o出现的位置
(2)只要indexOf()返回的结果不是-1就继续往后查找
(3)因为indexOf()只能查找到第一个,所有后面的查找,利用第二个参数,当前索引加1,从而继续查找。

var str = 'ojuoojoo';
var index = str.indexOf('o');
var num = 0;
while(index != -1){
    console.log(index);
    num++;
    index = str.indexOf('o',index+1);
}
console.log("o出现的次数是:",num);
//结果为:
0
3
4
6
7
o出现的次数是: 5

5、根据位置返回字符

方法名说明使用
charAt(index)返回指定位置的字符(index 字符串的索引号)str.charAt(0)
charCodeAt(index)获取指定位置处字符的ASCII码(index索引号)str.charCodeAt(0)
str[index]获取指定位置处字符HTML5,IE8+支持和charAt()等效
var str = 'asdfg';
console.log(str.charAt(2));//结果为d
//遍历所有的字符
for(var i = 0;i < str.length;i++){
    console.log(str.charAt(i));
}
//charCodeAt(index)返回相应字符的ASCII码,可以用来判断用户按下了哪个键
var str1 = 'abcdef';
console.log(str1.charCodeAt(3));//结果为100

var str2 = 'asdf';
console.log(str2[1]);//结果为s

案例:判断一个字符串‘abodjooheohoi’中出现次数最多的字符,并统计其次数。
核心算法:利用charAt()遍历这个字符串,把每个字符都储存给对象,如果对象没有该属性,就为1,如果存在就+1,然后遍历对象,得到最大值和该字符。

function fun(str) {
    var obj = {};
    for(let i = 0;i < str.length;i++){
        chars = str.charAt(i);
        if(obj[chars] != null){
            obj[chars]++;
        }else{
            obj[chars] = 1;
        }
    }
    console.log(obj);
    let ch = '';
    let max = 0;
    for(var k in obj){
        if(obj[k] > max){
            max = obj[k];
            ch = k;
        }
    }
    console.log(`最大值为${max},该字符为${ch}`);
}
fun('abodjooheohoi');
//结果为:
{ a: 1, b: 1, o: 5, d: 1, j: 1, h: 2, e: 1, i: 1 }
最大值为5,该字符为o

6、字符串操作方法

方法名说明
concat(str1,str2,str3…)concat()方法用于连接两个或多个字符串,拼接字符串,等效于+,+更常用
substr(start,length)从start位置开始(索引),length是取的个数
slice(start,end)从start位置开始(索引),截取到end的位置(索引),注意:end取不到
substring(start,end)从start位置开始(索引),截取到end的位置(索引),注意:end取不到,基本和slice相同,但是不接受负值
toLowerCase()字符串中的字母转成小写
toUpperCase()字符串中的字母转成大写
replace(‘被替换的字符’,’替换为的字符’)替换字符,它只会替换第一个字符
split(‘分隔符’)将字符转换为数组并用分隔符分开

(1)concat(str1,str2,str3…)

var str1 = 'hello';
var str2 = 'world';
console.log(str1.concat(str2));//结果为helloworld
console.log(str1+str2);//结果为helloworld

(2)substr(start,length)

var str = 'helloworld';
console.log(str.substr(2,2));//从第二个字符开始截取两个字符,所以结果为ll

(3)slice(start,end)

var str = 'l love China'
console.log(str.slice(-1));//结果为a,获取最后一个字符
console.log(str.slice(-2));//结果为na,证明slice方法可以接收负值
console.log(str.slice(2,6));//结果为love
console.log(str.slice(2));//结果为love China

(4)substring(start,end)

var str = 'l love China'
console.log(str.substring(2,6));//结果为love
console.log(str.substring(2));//结果为love China
console.log(str.substring(-2));//结果为l love China,它不接受负值

(5)toLowerCase()与toUpperCase()

var str = 'l love China'
console.log(str.toLowerCase());//结果为:l love china,字符串全部转为小写
console.log(str.toUpperCase());//结果为:L LOVE CHINA,字符串全部转为大写

(6)replace(‘被替换的字符’,’替换为的字符’)

//替换字符replace(‘被替换的字符’,‘替换为的字符’),它只会替换第一个字符
var str = 'aaaab';
console.log(str.replace('a','b'));//只会替换第一个字符,所以结果为baaab

//有一个字符串‘asdeoofoolo’,要求把里面的o替换为*
var str = 'asdeoofoolo'
while(str.indexOf('o') != -1){
    str = str.replace('o','*');
}
console.log(str);//结果为:asde**f**l*

(7)split(‘分隔符’)

var str = 'hello world !';
console.log(str.split(' '));//结果为[ 'hello', 'world', '!' ]
console.log(str.split('l'));//结果为[ 'he', '', 'o wor', 'd !' ]

案例

判断用户名是否合法,案例需求:用户名长度在3~10范围内,不能出现敏感词admin的任何大小写形式。

<!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>
    <script>
        //判断用户名是否合法,案例需求:用户名长度在3~10范围内,不能出现敏感词admin的任何大小写形式。
        var str = prompt('请输入您的用户名');
        var index = str.toLowerCase().indexOf('admin');
        if(str.length<3 || str.length>10 || index != -1){
            alert('您的用户名不合法');
        }else{
            alert('输入成功');
        }
    </script>
</head>
<body>
    
</body>
</html>

在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:56:25  更:2021-12-07 11:56:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:01:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码