JavaScript和TypeScript语法基础,数组,字符串的split,splice,slice,reduce,concat,charAt,indexOf,replace,se

本文详细介绍了JavaScript和TypeScript中数组的操作方法,包括声明、初始化、元素赋值与添加、遍历、连接、排序、反序及常用数组方法的使用,如concat、every、filter等,帮助开发者掌握高效数组处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript

基本数据类型 只有 Number string boolen object 等
使用时大多是直接声明并使用
var Ins;

数组 WXBanner._IDS = [];
WXBanner._IDS.push(ids[ran]);
遍历 i < WXBanner._IDS.length WXBanner._IDS[i]

TypeScript

一、数组的声明
let array1:Array;
let array2:number[];

二、数组初始化
let array1:Array = new Array();
let array2:number[] = [1,2,3];

三、数组元素赋值、添加、更改
先声明 public IsShowVideo = false

let array:Array = [1,2,3,4];
array[0] = 20;

array.splice(0, 1); // 删除元素(index, deleteCount)从index开始删除deleteCount个元素
array.shift(); // 删除第一个元素
array1 = array1.concat( array2) 合并 数组1 和 数组2 并赋值给 数组1
let indexC = array.indexOf(“c”); 查找c元素在 数组中的 索引值

七、连接数组元素
let array: Array = [“a”,“b”,“c”,“d”,“c”,“a”];
let result = array.join(); //result 为数组 a,b,c,d,c,a
result = array.join("+"); //result 为数组 a+b+c+d+c+a

八、排序、反序数组
array.sort(); // 对数组 从小到大排序
array.reverse(); //对数组 反序排列
array.split(",") //【 尸解 】, //以,为分割,进行分裂,返回分裂后的数组
array.splice(start,length,xiaoming,xianghong) //删除 或 删除再增加数组中的元素 从start位置开始删除,删除length个元素,
再在startwei位置增加xiaoming,xianghong。
详情见 排序 快速排序章节
array.slice(start,length) // 从数组中抽取一个数组 从索引为start位置即第 start+1 个开始抽取,
//抽取长度为length,length省略是抽取到末尾
array.shift() //在字符串或数组 头部 删除 一个元素 百度翻译:转移,挪动,切换。
unshift() //在字符串或数组 头部 增加 一个元素

pop() // 在数组末尾删除

//数组方法***********//

下表列出了一些常用的数组方法:

序号 方法 & 描述 实例

  1. concat() :连接两个或更多的数组,并返回结果。
    var alpha = [“a”, “b”, “c”];
    var numeric = [1, 2, 3];
    var alphaNumeric = alpha.concat(numeric);
    console.log("alphaNumeric : " + alphaNumeric ); // a,b,c,1,2,3

  2. every() :检测数值元素的每个元素是否都符合条件。
    function isBigEnough(element, index, array) {
    return (element >= 10);
    }

    							var passed = [12, 5, 8, 130, 44].every(isBigEnough); 
    							console.log("Test Value : " + passed ); // false
    
  3. filter() :检测数值元素,并返回符合条件所有元素的数组。
    function isBigEnough(element, index, array) {
    return (element >= 10);
    }

    	var passed = [12, 5, 8, 130, 44].filter(isBigEnough); 
    			console.log("Test Value : " + passed ); // 12,130,44
    
  4. forEach() :数组每个元素都执行一次回调函数。
    let num = [7, 8, 9];
    num.forEach(function (value) {
    console.log(value);
    });
    编译成 JavaScript 代码:

    							var num = [7, 8, 9];
    							num.forEach(function (value) {
    							    console.log(value);  // 7   8   9
    							});
    
  5. indexOf() :搜索数组中的元素,并返回它所在的位置。
    如果搜索不到,返回值 -1,代表没有此项。
    var index = [12, 5, 8, 130, 44].indexOf(8);
    console.log("index is : " + index ); // 2

  6. join() :把数组的所有元素放入一个字符串。
    var arr = new Array(“First”,“Second”,“Third”);
    var str = arr.join();
    console.log("str : " + str ); // First,Second,Third

    							var str = arr.join(", "); 
    								console.log("str : " + str );  // First, Second, Third
    							          
    							var str = arr.join(" + "); 
    							console.log("str : " + str );  // First + Second + Third
    
  7. lastIndexOf() :返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
    var index = [12, 5, 8, 130, 44].lastIndexOf(8);
    console.log("index is : " + index ); // 2

  8. map() :通过指定函数处理数组的每个元素,并返回处理后的数组。
    var numbers = [1, 4, 9];
    var roots = numbers.map(Math.sqrt);
    console.log("roots is : " + roots ); // 1,2,3

  9. pop() :删除数组的最后一个元素并返回删除的元素。
    var numbers = [1, 4, 9];
    var element = numbers.pop();
    console.log("element is : " + element ); // 9
    var element = numbers.pop();
    console.log("element is : " + element ); // 4

  10. push() :向数组的末尾添加一个或更多元素,并返回新的长度。
    var numbers = new Array(1, 4, 9);
    var length = numbers.push(10);
    console.log("new numbers is : " + numbers ); // 1,4,9,10
    length = numbers.push(20);
    console.log("new numbers is : " + numbers ); // 1,4,9,10,20

  11. reduce() :将数组元素计算为一个值(从左到右)。
    var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
    console.log("total is : " + total ); // 6

  12. reduceRight() :将数组元素计算为一个值(从右到左)。
    var total = [0, 1, 2, 3].reduceRight(function(a, b){ return a + b; });
    console.log("total is : " + total ); // 6

  13. reverse() :反转数组的元素顺序。
    var arr = [0, 1, 2, 3].reverse();
    console.log("Reversed array is : " + arr ); // 3,2,1,0

  14. shift() :删除并返回数组的第一个元素。
    var arr = [10, 1, 2, 3].shift();
    console.log("Shifted value is : " + arr ); // 10

  15. slice() :选取数组的的一部分,并返回一个新数组。
    var arr = [“orange”, “mango”, “banana”, “sugar”, “tea”];
    console.log("arr.slice( 1, 2) : " + arr.slice( 1, 2) ); // mango
    console.log("arr.slice( 1, 3) : " + arr.slice( 1, 3) ); // mango,banana

  16. some() :检测数组元素中是否有元素符合指定条件。
    function isBigEnough(element, index, array) {
    return (element >= 10);
    }
    var retval = [2, 5, 8, 1, 4].some(isBigEnough);
    console.log("Returned value is : " + retval ); // false
    var retval = [12, 5, 8, 1, 4].some(isBigEnough);
    console.log("Returned value is : " + retval ); // true

  17. sort() :对数组的元素进行排序。
    var arr = new Array(“orange”, “mango”, “banana”, “sugar”);
    var sorted = arr.sort();
    console.log("Returned string is : " + sorted ); // banana,mango,orange,sugar

  18. splice() :从数组中添加或删除元素。
    var arr = [“orange”, “mango”, “banana”, “sugar”, “tea”];
    var removed = arr.splice(2, 0, “water”);
    console.log("After adding 1: " + arr ); // orange,mango,water,banana,sugar,tea
    console.log("removed is: " + removed);

    								removed = arr.splice(3, 1);  
    										console.log("After removing 1: " + arr );  // orange,mango,water,sugar,tea 
    										console.log("removed is: " + removed);  // banana
    
  19. toString() :把数组转换为字符串,并返回结果。
    var arr = new Array(“orange”, “mango”, “banana”, “sugar”);
    var str = arr.toString();
    console.log("Returned string is : " + str ); // orange,mango,banana,sugar

  20. shift() :方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
    var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
    fruits.unshift(“Lemon”,“Pineapple”);
    fruits 将输出:
    Lemon,Pineapple,Banana,Orange,Apple,Mango

  21. unshift() :向数组的开头添加一个或更多元素,并返回新的长度。
    var arr = new Array(“orange”, “mango”, “banana”, “sugar”);
    var length = arr.unshift(“water”);
    console.log("Returned array is : " + arr ); // water,orange,mango,banana,sugar
    console.log("Length of the array is : " + length ); // 5

//字符串方法***********//

更多方法实例可以参见:JavaScript String 对象。

方法 描述
charAt() 返回指定索引位置的字符
charCodeAt() 返回指定索引位置字符的 Unicode 值
concat() 连接两个或多个字符串,返回连接后的字符串
fromCharCode() 将 Unicode 转换为字符串
indexOf() 返回字符串中检索指定字符第一次出现的位置
lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置
localeCompare() 用本地特定的顺序来比较两个字符串

match() 找到一个或多个正则表达式的匹配

replace() 替换与正则表达式匹配的子串
search() 检索与正则表达式相匹配的值
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
split() 把字符串分割为子字符串数组
substr() 从起始索引号提取字符串中指定数目的字符
substring() 提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase() 把字符串转换为小写
toString() 返回字符串对象值
toUpperCase() 把字符串转换为大写
trim() 移除字符串首尾空白
valueOf() 返回某个字符串对象的原始值

array.split() //在数组中删除 或 删除后再添加元素 进行分割就好比在一根长绳子的每个打结处剪开,对数组也是如此。 通过分离 字符串字串,将字符串对象分割成字符串数组
reduce() // 计算数组或字符串元素相加后的总和,累加效果
function toCamel(str) {
if(typeof str === ‘string’){
str = str.split(’’)
}
return str.reduce(_doCamel); //相当于去除空格再组合在一个字符串 ,说白了就是去除字符串中的 ‘’ 空格 也可以用正则表达式
//替换这个函数
}

var _item = _text.charAt(j); // charAt() 方法可返回指定 j 位置的字符。
this.items[_index].active = true;
if (info.answer.indexOf(_item) >= 0 ) { //indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。

array.splice(start: number, deleteCount?: number) //删除 或 删除再增加数组中的元素
array.splice(start: number, deleteCount: number, …items: T[])

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
fruits.splice(2,1,“Lemon”,“Kiwi”); 从下标为【 2 】的位置开始删除,删除 【1】 个,从下标为【 2】的位置的添加数组元素 “Lemon”,“Kiwi”
fruits 输出结果:Banana,Orange,Lemon,Kiwi,Mango

//*********************************** 去掉数组中为10的元素,并返回最终的数组 //
arr[10] = [1,5,10,3,4,10,8,2,10,9]
//
**** 方法1 //
for(var i =0 ; i < arr.length ; i++){
if(arr[i] = 10){
arr.splice(i,1); 从下标为【 i】的位置开始删除,删除 【1】 个,从下标为【 2】的位置的添加数组元素
}
}
arr输出结果:1,5,3,4,8,2,9
//
***** 方法2 *********************************//
声明一个新的数组 tempArr[];
for(var i =0 ; i < arr.length ; i++){
if(arr[i] != 10){
tempArr.push(arr[i]); 把数组中不是10的元素放到新的数组中
}
}

实例
从第三个位置开始删除数组后的两个元素:

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
fruits.splice(2,2); 从下标为【 2】的位置开始删除,删除 【2】 个元素,返回最终的数组

百度翻译,胶接,粘接,就好比,将绳子从需要的位置剪开,去掉中间坏的部分,再将剩下的两端粘合,或把坏的部分换成新的之后再粘接成完成的绳子,对数组也是如此。 通过分离 字符串字串从数组中删除元素,并在必要时在其位置插入新元素,返回已删除的元素。

array.slice()
// 【薄片,部分;份额;锅铲;把…切成(薄)片;切;割;划;】定向抽取一段绳子中的一部分 返回数组的一部分 从指定头部到指定尾部

array.shift()
//【百度翻译:转移,挪动,切换,】。【类库:返回数组的一部分】。 删除数组中的第一个元素,并返回这个数组,相当于删除第一位,把第二位到最后一位挪动,切换到前面的位置。

有关字符串的方法
比较常用的方法
String.prototype.split() 百度翻译,将绳子剪开,去掉中间坏的部分,再将剩下的两端粘合,对数组也是如此。 通过分离 字符串字串,将字符串对象分割成字符串数组
String.prototype.substring()返回在字符串中指定两个下标之间的字符。 console.log(anyString.substring(0,3)); 不算上第三个 第0到2个
**String.prototype.slice()**摘取一个 字符串区域 ,返回一个新的字符串。
String.prototype.trimStart() 从字符串的左侧去除空格。
String.prototype.trimLeft()
从字符串的左侧去除空格。

String.prototype.trimEnd() 从字符串的右侧去除空格。
String.prototype.trimRight()
从字符串的右侧去除空格。

//**************************** 保证数组地址不变,但是内容实时更新 *************//
//
说白了就是保证 保证list地址不变 ,指向这个地址的参数不用手动更新也能自己改变 **************//
想要保持数组的长度不变,就要新声明一个数组_itemList 然后pop掉数组内所有的元素, 再把想要的数组mailList内的元素 push进这个新声明的数组_itemList,就可以保持这个新的数组_itemList长度不变 ,如果只是不
private _itemList: CustomMail[] = []
for (index; index < this._itemList.length;) {
this._itemList.pop()
} //保证list地址不变
件奖励不会触发排序
for (let index = 0; index < mailList.length; index++) {
self._itemList.push(mailList[index])
}
tableView.setCellCreateHandler(function (cellNode: cc.Node, cellBase: MainMailCell) {
cellBase.setInfo(self._itemList) //刷新的时候,不会执行此句,但是_itemList的长度是指向
})
tableView.showWithLength(self._itemList.length)

public setInfo(itemList: CustomMail[]) {
let self = this
this._itemList = itemList
}
///

public setTime(createTime: number): { timeStr: string; language: string } {
    let subTime = ServerTime.instance.formatCreateTime(createTime)
    return subTime
}

public onRefresh(cellIndex) {
    let item = this._itemList[cellIndex]
    this._curCellIndex = cellIndex
    if (item === null || item === undefined) {
        return
    } else {
        this._curMailId = item.id
    }
    let subTime = this.setTime(item.create_time) // item.create_time.toNumber())
    }
<think>嗯,用户想了解在TypeScript中如何处理字符串数组,特别是定义操作方法。首先,我需要回忆一下相关的TypeScript知识,并结合提供的引用资料来整理答案。 根据引用[1],声明数组语法是`var array_name[:datatype];`,初始化则是用方括号赋值。引用[2][4]提到了两种定义方式:一种是使用类型加中括号,比如`string[]`,另一种是使用泛型数组`Array<string>`。比如`let arr: string[] = ["a", "b"];`或者`let arr: Array<string> = ["a", "b"];`。还要注意类型严格,不能混入其他类型的元素,比如数字或者布尔值,否则会报错。 接下来是操作方法。引用[3]中提到了`push`、`unshift`、`pop`、`shift`等方法,这些都是数组的基本操作。需要详细说明这些方法的作用,比如`push`添加元素到末尾,`unshift`添加到开头,`pop`移除最后一个元素等。此外,还可以提到其他常用方法如`slice`、`splice`、`map`、`filter`等,但需要根据引用中的例子来调整,比如引用[3]中的遍历数组,可能涉及`forEach`或者`map`方法。 引用[4]还提到了使用`Array`对象创建数组,例如`new Array("元素1", "元素2")`,但需要注意这种方式可能带来的问题,比如单个参数时表示数组长度,容易出错,所以推荐使用字面量方式。 用户可能还关心类型推断,比如如果初始化时赋值了字符串数组TypeScript会自动推断类型,不需要显式声明。这在引用[2][4]的例子中也有体现。 此外,联合类型数组可能也是一个相关点,比如字符串数字的联合数组,但用户的问题主要集中在字符串数组,所以可能不需要深入,但可以作为扩展提到。 最后,要确保回答结构清晰,分点说明定义操作,并给出示例代码。同时,根据用户要求生成相关问题,比如类型错误处理、联合类型数组、遍历方法、类型推断等。 需要检查是否所有引用的内容都被正确引用,比如引用[3]中的函数返回数组的例子,可以用来展示如何从函数返回字符串数组,这可能在操作方法部分提到。 可能还需要注意用户提到的“处理字符串数组”是否包括声明、初始化、添加、删除、修改、遍历等操作,确保覆盖这些方面。同时,示例代码要符合TypeScript语法,比如使用`let`或`const`声明变量,类型注解的位置等。 最后,确保所有行内数学表达式用$...$,但在这个问题中可能用不到数学公式,所以主要关注代码块的格式引用标注的正确性。</think>### TypeScript字符串数组的定义与操作方法 #### 一、定义字符串数组TypeScript中,字符串数组的定义有以下两种常用方式: 1. **字面量语法** 使用`类型[]`格式直接声明并初始化: ```typescript let names: string[] = ["郭靖", "黄蓉", "杨过", "小龙女"]; // 严格限定元素为字符串[^3] ``` 若尝试添加非字符串元素会报错: ```typescript names.push(100); // 错误:类型“number”的参数不能赋给“string”类型[^2] ``` 2. **泛型语法** 通过`Array<类型>`格式定义: ```typescript let cities: Array<string> = ["北京", "上海", "广州"]; ``` 3. **类型推断** 初始化时若元素均为字符串,可省略类型注解: ```typescript let colors = ["红", "绿", "蓝"]; // 自动推断为string[] ``` #### 二、常用操作方法 1. **添加元素** - `push()`末尾追加: ```typescript names.push("张无忌"); // ["郭靖", "黄蓉", "杨过", "小龙女", "张无忌"] ``` - `unshift()`开头插入: ```typescript names.unshift("周伯通"); // ["周伯通", "郭靖", "黄蓉", "杨过", "小龙女"] ``` 2. **删除元素** - `pop()`移除最后一个元素: ```typescript names.pop(); // 返回"小龙女",数组变为["郭靖", "黄蓉", "杨过"] ``` - `shift()`移除第一个元素: ```typescript names.shift(); // 返回"郭靖",数组变为["黄蓉", "杨过", "小龙女"] ``` 3. **遍历操作** - `forEach()`遍历元素: ```typescript names.forEach(name => console.log(`角色:${name}`)); // 输出所有角色名[^3] ``` - `map()`转换数组: ```typescript const upperNames = names.map(name => name.toUpperCase()); // ["郭靖" → "郭靖"] ``` 4. **其他方法** - `filter()`过滤: ```typescript const longNames = names.filter(name => name.length > 2); // 筛选名字长度超过2的角色 ``` - `join()`合并为字符串: ```typescript const str = names.join(","); // "郭靖,黄蓉,杨过,小龙女" ``` #### 三、特殊场景处理 - **函数返回字符串数组** ```typescript function getHeroes(): string[] { return new Array("郭靖", "黄蓉"); // 明确标注返回值类型 } ``` - **联合类型数组** 若需要混合类型,可使用联合类型: ```typescript let mixed: (string | number)[] = ["年龄", 18]; // 允许字符串数字共存[^4] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值