JavaScript Array与String简单使用

JS对象:数组

对比Object-C中的数组,JavaScript数组有一些不一样的特点
JavaScript数组:无类型 动态 稀疏
无类型:指的是数组元素没有类型限制 可以是任意类型 string number boolean array object 这些类型都可以成为数组元素
动态:指的是数组的长度 会动态改变 不分可变数组与不可变数组
稀疏:指的是数组中两个元素下标可能不是连续的 无越界错误
例['1',,'2'] 1与2之间存在一个undefined 这样不会报错 下标1取到的值就是undefined

创建
let array = [1,2];//数组array存在两个元素 1 2  
let array = new Array();// 无参数 空数组
let array = new Array(3); // 长度为3的数组
let array = new Array(5,"message");// 元素有5 ‘message’的数组
let array = Array.of(7);//创建有一个元素7的数组 [7]
数组的简单操作
#1.取值与赋值 长度
let value = array[0]; //获取下标为0的元素值
array[0] = 'newValue';//赋予新值
array.length  //长度 OC中获取长度count

//用message 替换数组中从0下标(包含)开始 到9下标(不包含)结束的所有元素 
例:['1','2','3'].fill('message',0,2)  ['message','message',3]
array.fill('message',0,9);

#2.添加元素 
 array.push('newValue');//在数组末尾添加一个元素
array.unshift("firstValue");//在数组开头添加一个元素
array.splice(2,0,"insertValue");//在数组下标为2的位置插入一个元素
array.splice(2,0,"insertValue","insertValue")//在数组下标为2的位置连续插入两个元素
注意点:插入元素参数说明  第一个参数2 指定下标  第二个参数0 指定从下标2开始要删除几个元素  后面接着的多个元素则是要插入的元素  
*如果同时存在需要删除与插入的情况 先执行删除操作 后执行插入操作  先删后插*

#3.删除元素
array.shift();//删除数组第一个元素
array.pop();//删除数组最后一个元素
array.splice(2,1);//删除数组下标2的元素
array.splice(2,3);//删除数组下标2 3 4的三个元素
array.splice(0,array.length);//删除全部元素
delete array[0];//这个方法删除的是 下标为0的元素的值 但是实体还是存在于数组中 数组长度不变

#4.合并多个数组
let array1 = ["1",'2'];
let array2 = ['3','4'];
let newArray = array1.concat(array2);
//此方法不会更改现有数组,而是返回一个新数组。

#5.将各元素拼接成字符串
let array = ['1','2'];
let str = array.join('&');//& 指的是拼接的字符串 数组中各元素之间分隔符  1&2
let str = array.toString();//分隔符固定,

#6.判断是否包含指定元素
let array = ['function','happy','sad','sad'];
//直接判断 包含返回true  不包含返回false
array.includes('happy');
//返回元素为'sad'的索引 参数1指的是从数组下标为1的元素开始向后排查  如果没有则返回-1 有则返回第一个满足条件的元素下标  这里是2
let sadIndex = array.indexOf('sad',1);
//返回数组中最后一个'sad'的下标 如果没有则返回-1  这里是3
let lastIndex = array.lastIndexOf('sad');
//让数组的每一个元素执行一次函数  返回数组中第一个满足条件的元素  参数value是数组中的元素 如果没有满足的  返回undefined
let value = array.find(value => {  
      return value == 'function';
 });
//让数组的每一个元素执行一次函数  返回数组第一个中满足条件的元素下标  参数value是数组中的元素 如果没有满足的 返回-1
let index = array.findIndex(value => {
     return value == 'happy';
 });
//让数组中每一个元素都执行一次函数 只要有任意一个元素满足函数的判断就返回true
array.some(value=>value=='message');//判断数组中是否存在'message' 存在返回true 反之返回false

//自定义方法 遍历进行判断

#7.排序
array.reverse();  //将数组元素进行反转 例:[1,2,3]  [3,2,1]
array.sort();//字符串数组 进行排序 升序
//采用函数判断 根据函数中的条件进行排序
array.sort((a,b) => {
        //return a.length - b.length;//大的向后
        return b.length - a.length;//小的向后
});
        
#8.从原数组中截取一部分 形成新的数组
let array = ['begin','find','end'];
let newArray = array.slice(1,3);//参数一 从什么下标开始(包含本下标元素)  参数二 到什么下标结束(不包含本下标元素)
let newArray = array.filter(value => value > 8);//获取数组中所有大于8的元素 形成一个新数组

#9.数组中每一个元素都执行一遍函数
//让数组中所有元素都加上了一个字符串new
 array.forEach(value => array[array.indexof(value)] = value+'new');
//让数组中每个元素都加new 并返回形成一个新的数组
array.map(value => value + 'new');

#10.递归
let array = [1,2,3,3,4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
let newStr = array.reduce(reducer,'message');//值为message12334  'message'做为函数reducer的初始值  每次循环都会加上数组的下一个元素
let newStr = array.reduceRight(reducer,'message');//值为message43321  反向
let newStr = array.reduce(reducer);//值为13  正向1+2+3+3+4   

#11.判读数组中所有元素是否都满足函数判断
array.every(value=>value==17);//如果全都满足返回true  不是全部都满足返回false

#12.数组内元素浅拷贝至数组内指定位置
let array = [1,2,3,4,5,6,7];
array.copyWithin(1,4,5);//完整形态
//1 指浅拷贝的元素要复制到什么位置上 这里从下标为1(包含) 的地方
开始
//4 指从什么地方开始复制元素 这里从下标4(包含)开始  默认是从0下标开始复制
//5 指复制到什么地方结束 这里复制到下标5(不包含)结束  默认是array.length
array.copyWithin(3);//简写 等价于array.copyWithin(3,0,array.length);

JS对象:字符串

字符串对象用于处理已有的字符块。
字符串用来储存一系列字符。
一般都直接用字符串就行了。

创建
let string = 'message';//变量 类型string
let string = String('message');//变量 类型string
let string = new String('message');//对象 类型object 一般情况不用这种方式 具体为什么 前辈提醒会拖慢执行效率
//以上三种创建方式 在函数的调用上 没有什么区别  都可以调用
字符串的简单操作
#1 长度获取  单个字符获取
string.length;

#2 字符获取
string[0];//获取字符串中第一个字符  (参数:字符位置)
string.charAt(0);//获取字符串中第一个字符  (参数:字符位置)
string.match(/s/g);//通过正则表达式匹配 找到一个或多个字符串


#3 Unicode编码与字符转换
string.charCodeAt(1);//返回字符串中位置1的字符的Unicode编码
String.fromCharCode(101);//返回Unicode编码为101 的字符

#4 字符串拼接
let str1 = 'mess';
let str2 = 'age';
let newStr = str1.concat(str2);//'message'
let newStr = str1 + str2;//'message'
//两种方式都可以得到同一个结果 都是在堆开辟空间 存放新数据
//后经过了解 两者性能相差不大 
//web开发人员使用:concat大多用于数组操作  字符串的拼接基本都是用的“+”

#5 获取指定字符串在原字符串中位置
let index = string.indexOf('ge');//获取第一个'ge'字符串 在原字符串中的开始位置
let lastIndex = string.lastIndexOf('e');//返回最后一个字符串'e' 在原字符串中的位置
let seachIndex = string.search(/s/g);//返回正则表达式匹配的字符串的位置

#6 字符串替换
string.replace('messa','MESSA');//将指定字符串替换成新字符串(参数一 需要替换的字符串  参数二 替换的字符串)

#7 字符串截取
let newStr =  string.slice(1,4);//截取从位置1(包含) 开始 到 位置4(不包含) 的字符串 返回一个新字符串
let newStr = string.substr(0,2);//获取从位置0(包含)开始 长度为2 的字符串
let newString = string.substring(0,2);//获取从位置0(包含)开始 到位置2(不包含)的字符串
//注意点 两个参数都是必须的  如果只指定一个参数  则是代表从指定位置(不包含)开始 截取到字符串最后

#8 字符串分割
let string = 'message8message';
var strS = string.split('8');//将字符串以分隔符8 为标准进行分割 返回字符串数组

#9 字符串大小写
string.toUpperCase();//全部大写
string.toLowerCase();//全部小写

#10 判断是否是指定字符串结尾
let string = 'message message';
var result = string.endsWith('ess',2);//是true 否false (参数一:指定结尾字符串 参数二:判断长度 从0开始 无指定则默认length)
//例子中 判断字符串从0开始 长度为2 的字符串中是否以'e'结尾
//理解:将字符串从0开始 长度2 截取出来'me'  然后判断'me'是否以'ess'结尾 例子中返回false
//一般用法:string.endsWith('ess');//判断字符串是否以'e'结尾

#11 判断字符串中是否存在指定字符串
 var result = string.includes('ess',0);//ture false (参数0 指定从什么位置开始搜索到最后)

#12 空格剔除
string.trim();//剔除前后空格
string.trimLeft();//剔除前端空格
string.trimRight();//剔除后端空格

#13 支持正则表达式的字符串函数操作
search  match  replace  split
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容