【JS】String、Object、Array常用方法

news2024/11/26 7:09:13

String

const str1 = 'Hello';
const str2 = 'World';
方法名字方法使用返回参数返回
concat 连接一(多)个字符串str2.concat(', ', str1)"World, Hello"列举要连接的字符串返回新字符串
startsWith判断是否以指定字符串开头

str1.startsWith('H')

str1.startsWith('H',3)

true

false

1、要结尾的字符串

2、被找到的起始位置索引,默认0

endsWith判断是否以指定字符串结尾

str1.endsWith('o')

str1.endsWith('o',2)

true

false

1、要结尾的字符串

2、被找到的末尾位置的索引,默认字符串的length

includes字符串中是否有指定字符串,区分大小写

str1.includes('Hel')

str1.includes('Hel', 2)

true

false

1、要查找的字符串

2、要开始查找的位置索引,默认0

indexOf字符串中搜索指定字符串

str1.indexOf('e')

str1.indexOf('l', 2)

1

2

1、要查找的指定字符串

2、要开始查找的位置,负数默认从0开始找

返回第一个找到的元素的索引
lastIndexOf字符串中搜索指定字符串

str1.lastIndexOf('l', 1)

str1.lastIndexOf('l', 5)

-1

3

1、要查找的指定字符串

2、要查找的最后一个位置的索引>=找到的指定字符串的索引要

返回最后一个找到的元素的索引
match检查字符串与正则匹配结果,返回数组str1.match(/[a-z]/g)['e', 'l', 'l', 'o']1、正则表达式
matchAll检查字符串与正则匹配的索引结果[...str1.matchAll(/(l)l/g)][['ll','l']]1、正则表达式
padEnd从末尾开始填充字符串str1..padEnd(8, '.')'Hello...'

1、填充后的长度

2、要填充的字符串

返回新字符串
padStart从开头开始填充字符串str1..padStart(8, '.')'...Hello'

1、填充后的长度

2、要填充的字符串

返回新字符串
repeat重复几次,连一起str1.repeat(2)'HelloHello'1、重复的次数返回新字符串
replace指定字符串替换成指定字符串str1.replace('He', 'a')‘allo’

1、要替换的字符串

2、替换后的字符串

返回新字符串
replaceAll指定字符串全部替换成指定字符串str1.replaceAll('l', 'e')'Heeeo'

1、要替换的字符串

2、替换后的字符串

返回新字符串
search正则匹配搜索str1.search(/e/g)11、要匹配的正则表达式返回匹配的索引
slice提取部分字符串str1.slice(1,3)'el'

1、提取的开始索引

2、提取的结束索引,默认.length

返回新字符串
substring提取字符串开始(包含开始位置)到结束(不包含结束位置)的字符串str1.substring(1,3)'el'

1、提取的开始索引

2、提取的结束索引,默认.length

返回新字符串
split分割字符串放到数组中

str1.split('e')

str1.split('l')

['H', 'llo']

['He', '', 'o']

1、以某个字符分割

2、返回数组元素的最大长度

返回新数组
toLowerCase转成小写str1.toLowerCase()"hello"返回新字符串
toUpperCase转成大写str1.toUpperCase()"HELLO"返回新字符串
toString转成返回String对象的字符串new String(str1).toString()'Hello'返回新字符串
trim删除前后空白符‘ Hello ’.trim()'Hello'返回新字符串
trimStart删除开头空白符‘ Hello ’.trim()‘Hello ’返回新字符串
trimEnd删除开头空白符‘ Hello ’.trim()‘ Hello’返回新字符串
valueOf返回String对象的字符串new String(str1).valueOf()'Hello'返回新字符串

Array

const arr1 = ['a', 'b', 'c'];
const arr2 = ['d', 'e', 'f'];
方法名字方法使用返回参数返回
concat合并多个数组arr1.concat(arr2)['a', 'b', 'c', 'd', 'e', 'f']列举所有合并的数组返回新数组
copyWithin从指定索引开始替换开始到结束位置的值arr1.copy(0,1,2)['b', 'b', 'c']

1、开始替换的位置

2、复制的开始位置

3、复制的结束位置

改变数组,长度不变
every数组内所有元素是否通过指定函数的测试arr1.every((v) => v==='a')false1、函数条件返回boolean
fill用固定值填充数组从开始到结束索引的全部元素arr1.fill('gg', 1,2)['a', 'gg', 'c']

1、填充值

2、填充的开始位置

3、填充的结束位置

返回修改后的数组
filter创建满足函数的所有元素arr1.filter((v) => v === 'a')['a']1、函数条件返回新数组
find返回数组中满足条件的第一个元素arr1.find(v => v === 'a')'a'1、函数条件返回找到的第一个元素
findIndex返回数组中满足条件的第一个元素的索引arr1.findIndex(v => v === 'a')01、函数条件返回找到的第一个元素的索引
findILast返回数组中满足条件的第一个元素arr1.findILast(v => v === 'a')'a'1、函数条件返回找到的最后一个元素
findILastIndex返回数组中满足条件的最后一个元素的索引arr1.findILastIndex(v => v === 'a')01、函数条件返回找到的最后一个元素的索引
flat递归将数组所有元素拼到新数组

[0,1,arr1].flat()

[[0,1],[arr1]].flat(2)

[0,1,'a','b','c']

[0, 1, 'a','b','c']

1、递归的层级,默认1返回新数组
flatMap对数组每个元素执行回调后,再将结果展开一层arr1.flatMap((v) => v === 'a' ? [1,2] : 3)[1, 2, 3, 3]1、函数条件返回新数组
forEach数组每个元素执行一次给定函数arr1.forEach(v => console.log(v))

'a'

'b'

'c'

1、函数条件修改原数组
map数组每个元素执行一次给定函数arr1.map(v => v)

['a','b','c']

1、函数条件返回新数组
includes判断数组是否包含指定值arr1.includes('a', 1)false

1、查找的元素

2、开始查找的索引位置

返回boolean
indexof返回数组中第一次出现元素的索引arr1.indexOf('b',1)1

1、查找的元素

2、开始查找位置的索引

返回数组中第一次出现元素的索引
lastIndexof返回数组最后一次出现元素的索引arr1.lastIndexof('b',0)1

1、查找的元素

2、开始查找位置的索引

返回数组中最后一次出现元素的索引
join将数组所有元素连成字符串arr1.join('')'abc'

1、连接符

返回字符串

keys返回数组中索引的新的数组迭代器对象;

values:返回数组值

arr1.keys()

for (const key of iterator) {
  console.log(key);
}

0

1

2

返回新的数组迭代器对象
pop删除数组最后一个元素arr1.pop()'c'返回删除的数组
shift删除数组第一个元素arr1.shift()['b','c']返回删除后的原数组
push添加指定元素到数组末尾arr1.push('1','2')['a','b','c','1','2']1、列举所有添加的值返回数组长度;修改原数组
unshift添加数组头部arr1.push('1')['1','a','b','c']1、列举所有添加的值返回数组长度;修改原数组
reduce对数组每个元素按序执行函数,每次每一次运行结果作为参数传入,最后将结果汇总为单个返回值,数组第一个元素默认当作初始值

arr3 = [1,2,3]

initval = 1

const sum = arr3.reduce((prev, current) => prev + current), initval) 

7

执行顺序是1+1+2+3

1、执行函数

2、初始值

使用“reducer”回调函数遍历整个数组后的结果
reduceRight对数组的每个元素从右往左的顺序依次执行函数,返回单个值

arr1 = [
  [0, 1],
  [2, 3],
  [4, 5],
];

arr1.reduceRight((accumulator, currentValue) =>accumulator.concat(currentValue)
);

[4,5,2,3,0,1]

1、执行函数

2、初始值

返回单个值
reverse反转数组arr1.reverse()['c','b','a']

改变原数组;

toReverse返回新数组

slice有开始到结束(不含)的新数组arr1.slice(0,2)['a','b']

1、开始位置(含)

2、结束位置(不含)

返回新数组
splice就地删除或者替换已存在的元素或添加新元素arr1.splice(1,0,'1')['a','1','c','c']

1、开始位置

2、删除元素个数

3、添加元素

修改原数组;

toSpliced()返回新数组

some测试数组是否至少有一个元素通过执行函数返回truearr1.some(v => v==='a')true1、执行函数返回boolean
sort对数组进行排序[1,7,5].sort()[1,5,7]将元素转换为字符串,然后按照它们的 UTF-16 码元值升序排序。

改变原数组;

不改变原数组用toSorted()

toString返回字符串arr1.toString()'a,b,c'返回字符串
with在指定位置替换成指定值arr1.with(1,'1')['a','1','c']

1、替换的指定位置

2、替换的指定值

返回新数组
Array.from将类数组转成数组Array.from({'0':'a',length:3})['a']
Array.of将一组值转为数组

Array.of(3) 

Array.of(3,5,9)

[3]

[3,5,9]

Array.isArray()判断是否为数组Array.isArray(arr1)true
Array.of将参数变成数组Array.of('a','b')['a','b']

Object

// target
const t= { a: 1, b: 2 };
// source
const s= { b: 4, c: 5 };
方法名字方法使用返回参数返回
assign多个对象合并Object.assign(t,s){a:1,b:4,c:5}

1、目标对象

2、源对象

返回修改后的目标对象
create以现有对象为原型,创建新对象

t.show = function () {console.log(`${this.a} + ${this.b}`)}

me = Object.create(t)

t.show

1+ 2返回新对象
seal密封对象,现有属性可改,其他不能操作;isSealed()是否密封

Object.seal(t)

t.d = 55

Object.isSealed(t)

t.d = undefined

true

1、要密封的对象
freeze对象被冻结,不可改Object.freeze(t)1、冻结对象
isFrozen是否已冻结Object.isFrozen(t)true1、冻结对象返回boolean
hasOwn对象是否有指定的属性Object.hasOwn(t, 'a')true

1、对象

2、属性

返回boolean
setPrototypeOf将一个指定对象的原型设置为另一个对象

Object.setPrototypeOf(t,s)

t.c

5

1、要设置原型的对象

2、该对象的新原型

指定的对象
fromEntries将键值对列表转换为对象Object.fromEntries(new Map(['foo', 'bar'],['baz',42])){foo: 'bar', baz: 42}1、Map或者数组返回新对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitLab|应用部署

创建docker-compose.yaml文件 输入docker-compose配置 version: 3.8 services:gitlab:image: gitlab/gitlab-ce:15.11.2-ce.0restart: alwayscontainer_name: gitlab-ceprivileged: truehostname: 192.168.44.235environment:TZ: Asia/ShanghaiGITLAB_OMNIBUS_CONFIG: |exter…

ssm182在线作业管理系统的设计与实现+vue(论文+源码)_kaic

设计题目:在线作业管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所…

LeetCode-632. Smallest Range Covering Elements from K Lists [C++][Java]

目录 题目描述 解题思路 【C】 【Java】 LeetCode-632. Smallest Range Covering Elements from K Listshttps://leetcode.com/problems/smallest-range-covering-elements-from-k-lists/description/ 题目描述 You have k lists of sorted integers in non-decreasing o…

指针的奥秘:深入探索内存的秘密

前言 在计算机编程的广阔天地中,指针作为一种独特的数据类型,它不仅是C语言的核心,也是理解计算机内存管理的基石。指针的概念虽然强大,但对于初学者来说,它常常是学习过程中的一个难点。本文旨在揭开指针的神秘面纱&a…

⭐ Unity 资源管理解决方案:Addressable_ Demo演示

一、使用Addressable插件的好处: 1.自动管理依赖关系 2.方便资源卸载 3.自带整合好的资源管理界面 4.支持远程资源加载和热更新 二、使用步骤 安装组件 1.创建资源分组 2.将资源加入资源组 3.打包资源 4.加载资源 三种方式可以加载 using System.Collections…

红日靶场-4

环境搭建 我们这里会拿到三台主机,一台web主机,一台win7主机,一台DC主机 机器密码 WEB主机 ubuntu:ubuntu WIN7主机 douser:Dotest123 (DC)WIN2008主机 administrator:Test2008 登陆后需修改密码,我这里修改为1qazWSX 网络配…

使用八爪鱼爬虫抓取汽车网站数据,分析舆情数据

我是做汽车行业的,可以用八爪鱼爬虫抓取汽车之家和微博上的汽车文章内容,分析各种电动汽车口碑数据。 之前,我写过很多Python网络爬虫的案例,使用requests、selenium等技术采集数据,这次尝试去采集小米SU7在微博、汽车…

具有多个表盘、心率传感器、指南针和游戏的 DIY 智能手表

在此,我们将使用所学到的知识,结合使用硬件和软件组件从头开始创建自己的智能手表。在项目的这一部分,您将被指导完成组装硬件组件、设置软件以及配置智能手表的设置和功能的过程。到本项目结束时,您将拥有一款功能齐全的智能手表…

Django+Nginx+uwsgi网站Channels+redis+daphne多人在线聊天实现粘贴上传图片

在DjangoNginxuwsgi网站Channelsredisdaphne多人在线的基础上(详见DjangoNginxuwsgi网站使用Channelsredisdaphne实现简单的多人在线聊天及消息存储功能-CSDN博客),实现在输入框粘贴或打开本地图片,上传到网站后返回图片路径&…

[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案

问题log /tmp/ccByifPx.o: In function main: read.c:(.text0x1a): undefined reference to shm_open read.c:(.text0xd9): undefined reference to shm_unlink collect2: error: ld returned 1 exit status 程序代码 #include <stdio.h> #include <stdlib.h> #…

Otter 安装流程

优质博文&#xff1a;IT-BLOG-CN 一、背景 随着公司的发展&#xff0c;订单库的数据目前已达到千万级别&#xff0c;需要进行分表分库&#xff0c;就需要对数据进行迁移&#xff0c;我们使用了otter&#xff0c;这里简单整理下&#xff0c;otter 的安装过程&#xff0c;希望对…

wsl2的Ubuntu18.04安装ros和anaconda

参考&#xff1a;超详细 WSL2 安装 ros 和 anaconda_wsl2安装anaconda-CSDN博客 一.安装ros 1. 更换系统源 输入 wget http://fishros.com/install -O fishros && . fishros 和上面的链接一样&#xff0c;依次输入5-2-1 2. 安装ros 输入 wget http://fishros.c…

鸿蒙NEXT开发案例:字数统计

【引言】 本文将通过一个具体的案例——“字数统计”组件&#xff0c;来探讨如何在鸿蒙NEXT框架下实现这一功能。此组件不仅能够统计用户输入文本中的汉字、中文标点、数字、以及英文字符的数量&#xff0c;还具有良好的用户界面设计&#xff0c;使用户能够直观地了解输入文本…

【经典】抽奖系统(HTML,CSS、JS)

目录 1、添加参与者 2、多次添加 3、点击抽奖 功能介绍&#xff1a; 使用方法&#xff1a; 完整代码&#xff1a; 一个简单但功能强大的抽奖系统的示例&#xff0c;用于在网页上实现抽奖。 1、添加参与者 2、多次添加 3、点击抽奖 功能介绍&#xff1a; 参与者添加&…

用树莓派Pico控制8×8 LED点阵屏:深入解析C++核心知识与动态显示实现

88 LED点阵屏是一种直观的硬件显示工具,广泛应用于嵌入式开发中。本项目结合树莓派Pico和HT16K33驱动芯片,通过C++编程实现动态图案和文字的显示功能。本文将全面解析项目中的C++核心知识点,帮助读者深入理解C++在硬件编程中的实际应用。 一、项目背景与硬件简介 1. 项目目…

什么是 WPF 中的依赖属性?有什么作用?

依赖属性&#xff08;Dependency Property&#xff09;是 WPF 的一个核心概念&#xff0c;它为传统的 .NET 属性提供了增强功能&#xff0c;支持绑定、样式、动画和默认值等功能。通过依赖属性&#xff0c;WPF 提供了一种灵活的数据驱动的方式来处理 UI 属性。 1. 什么是依赖属…

视频分析设备平台EasyCVR视频设备轨迹回放平台与应急布控球的视频监控方案

在现代社会&#xff0c;随着城市化进程的加快和信息技术的不断进步&#xff0c;对于公共安全、交通管理、城市管理以及环境保护等领域的监控需求日益增长。应急布控球与EasyCVR视频监控方案的结合&#xff0c;正是为了满足这些领域对实时监控和快速响应的需求。这一组合利用最新…

MySQL原理简介—12.MySQL主从同步

大纲 1.异步复制为MySQL搭建一套主从复制架构 2.半同步复制为MySQL搭建一套主从复制架构 3.GTID为MySQL搭建一套主从复制架构 4.并行复制降低主从同步延迟或强制读主库 1.异步复制为MySQL搭建一套主从复制架构 (1)MySQL主从复制的原理 (2)搭建主从复制架构的配置 (1)MySQ…

Node报错:npm error code ETIMEDOUT

1、报错详细信息 npm error code ETIMEDOUT npm error syscall connect npm error errno ETIMEDOUT npm error network request to https://registry.npmjs.org/express failed, reason: connect ETIMEDOUT 104.16.1.35:443 npm error network This is a problem related to ne…

一篇文章了解Linux

目录 一&#xff1a;命令 1 ls命令作用 2 目录切换命令&#xff08;cd/pwd&#xff09; &#xff08;1)cd切换工作目录命令 3 相对路径、绝对路径和特殊路径 (1)相对路径和绝对路径的概念和写法 (2)几种特殊路径的表示符 (3)练习题&#xff1a; 4 创建目录命令&#x…