知识内容:

1.JavaScript中的数组

2.JavaScript中的字符串

一、JavaScript中的数组

1.JavaScript中的数组是什么

数组指的是数据的有序列表,每种语言基本上都有数组这个概念,但是JavaScript的数组跟别的语言的数组很不同:

  • 数组长度可以动态改变
  • 同一个数组中可以存储不同的数据类型
  • 数据的有序集合
  • 每个数组都有一个length属性,表示的是数组中元素的个数

JavaScript数组从本质上讲是一个Array对象

2.如何创建数组

 var s1 = ["123", "666", "333"]           // 字面量
var s2 = new Array("123", "666", "333") // 构造函数
console.log(s1)
console.log(s2)

3.访问、修改数组元素

 //创建一个长度为 5 的数据
var arr = [10, 20, 30, 40, 50];
console.log(arr[0]); //获取下标为 0 的元素, 即:10
console.log(arr[2]); //获取下标为 2 的元素, 即:30 arr[1] = 100; //把下标为 1 的元素赋值为100
console.log(arr)

4.遍历数组

有3种方法可以遍历数组:

  • for循环
  • for… in
  • for each ( ES5 新增)

 以下3种循环方法只要熟练掌握一种就可以了

 // 普通for循环遍历数组
var arr = [3, 9, 12, 13, 66];
for(var i = 0; i < arr.length; i++){ //数组长度多长,就遍历多少次。 循环变量作为数组的下标
console.log(arr[i]);
} // for ... in 遍历数组
// 每循环一轮,都会把数组的下标赋值给变量index,然后index就拿到了每个元素的下标。
//注意:这里index是元素的下标,不是与元素
//对数组来说,index从从0开始顺序获取下标
for (var index in arr) {
console.log(index); //循环输出: 0 1 2 3 4 5
}
for(var i in arr){
console.log(arr[i]);
} // for each 遍历数组
//调用数组的forEach方法,传入一个匿名函数
//匿名函数接受两个参数: 参数1--迭代遍历的那个元素 参数2:迭代遍历的那个元素的下标
//可以在匿名函数内部书需要的代码
arr.forEach( function(element, index) {
console.log(element);
});

5.数组其他常用方法

 1 obj.length          数组的大小
2
3 obj.push(ele) 尾部追加元素
4 obj.pop() 尾部获取一个元素
5 obj.unshift(ele) 头部插入元素
6 obj.shift() 头部移除元素
7 obj.splice(start, deleteCount, value, ...) 插入、删除或替换数组的元素
8 obj.splice(n,0,val) 指定位置插入元素
9 obj.splice(n,1,val) 指定位置替换元素
10 obj.splice(n,1) 指定位置删除元素
11 obj.slice( ) 切片
12 obj.reverse( ) 反转
13 obj.join(sep) 将数组元素连接起来以构建一个字符串
14 obj.concat(val,..) 连接数组
15 obj.sort( ) 对数组元素进行排序

(1)获取数组长度

 var arr = [10, 20, 30, 40, 50];
alert(arr.length); //弹出:5

(2)像数组中添加元素

向数组中添加元素有以下两种方法(一般都是用第一种):

  • obj.push(ele) 尾部追加元素
  • obj.unshift(ele) 头部插入元素
 var s = [1, 2, 3]
// 从尾部添加
s.push("新元素")
console.log(s)
s.push("666")
console.log(s) // 从头部添加
s.unshift("333")
console.log(s)

(3)从数组中删除元素

向数组中删除元素有两种方法:

  • obj.pop() 尾部移除元素
  • obj.shift() 头部移除元素
 var s = [1, 2, 3, 4, 5, 6]
v = s.pop();
console.log(v); //
console.log(s); // [1, 2, 3, 4, 5] s.shift();
console.log(s); // [2, 3, 4, 5]

(4)数组的转换方法

toString()转换方法:返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串

join() 方法:toString() 方法只能使用逗号连接,而 join() 方法可以使用指定的连接符连接

 var s = [1, 2, 3, 4, 5, 6]
console.log(s.toString())
console.log(s)
console.log(s.join("+"))
console.log(s)

(5)数组元素倒置 -> reverse方法

 var s = [1, 2, 3, 4, 5, 6];

 console.log(s.reverse());
console.log(s);

(6)查找指定元素在数组中的索引

 indexOf(item): 从前面开始向后查找 item 第一次出现的位置
lastIndexOf(item): 从尾部开始向前查找 item 第一次出现的位置
如果找不到元素,则返回 -1 indexOf(item, fromBack): 从第二个参数的位置开向后始查找 item 第一次出现的位置
lastIndexOf(item, fromForward): 从第二个参数的位置开始向前查找 item 第一次出现的位置
 var arr = ["66", 3, 21, "wyb"]
console.log(arr.indexOf("wyb")) //
console.log(arr.lastIndexOf("wyb")) //

(7)其他方法

其他方法不详细介绍,用的少,要用的时候再去查吧

 obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素
obj.splice(n,0,val) 指定位置插入元素
obj.splice(n,1,val) 指定位置替换元素
obj.splice(n,1) 指定位置删除元素
obj.slice( ) 切片
obj.reverse( ) 反转
obj.join(sep) 将数组元素连接起来以构建一个字符串
obj.concat(val,..) 连接数组
obj.sort( ) 对数组元素进行排序

二、JavaScript中的字符串

1.JavaScript字符串介绍

(1)JavaScript中字符串类型类似python中字符串类型:

  • 字符串是由字符组成的数组,字符串是不可变的:可以访问字符串任意位置的文本,但并未提供修改已知字符串内容的方法
  • 另外用双引号表示的字符串和单引号表示的字符串完全相同
  • 字符串有可以直接使用的方法

(2)定义字符串:

1 var s = "hello world"
2 var name = 'wyb'

(3)多行字符串:

1 var line = `
2 多行
3 字符串
4 `
5
6 // 输出到终端(要在浏览器打开检查器的终端才能看到)
7 console.log(line)

(4)转义符

在代码中表示字符串的时候, 很多东西不方便表示, 因此我们使用转义符的方式来表示,转义符是字符串中的特殊符号,由反斜杠(backslash)开始,接另一个字符结束
常用的转义符有:

  • \n // 表示一个换行符
  • \t // 表示一个 TAB(制表符)
  • \\ // 表示一个反斜杠 \
  • \' // 表示一个单引号
  • \" // 表示一个双引号

还有一些别的转义符,但极少使用,对于这种东西,不必记忆,知道有这么回事就好了

(5)字符串替换(格式化)

 var msg = "wyb"
var someThing = `${msg}666` // 替换字符串(格式化) console.log(someThing)

2.JavaScript中字符串常用方法

 obj.length                           长度

 obj.trim()                           移除空白
obj.trimLeft()
obj.trimRight)
obj.charAt(n) 返回字符串中的第n个字符
obj.concat(value, ...) 拼接
obj.indexOf(substring,start) 子序列位置
obj.lastIndexOf(substring,start) 子序列位置
obj.substring(from, to) 根据索引获取子序列
obj.slice(start, end) 切片
obj.toLowerCase() 大写
obj.toUpperCase() 小写
obj.split(delimiter, limit) 分割
obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效)
obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,
$数字:匹配的第n个组内容;
$&:当前匹配的内容;
$`:位于匹配子串左侧的文本;
$':位于匹配子串右侧的文本
$$:直接量$符号
obj.substr(start, length) 截取字符串
obj.substring(start, length) 截取字符串

补充 - 字符串常用知识点:

 var log = function (){
console.log.apply(this, arguments);
}; // ——字符串常用操作——
// 字符串可以判断相等、判断是否包含、相加、取子字符串
// 例子:
// 判断相等或者包含
log('good' == 'good')
log('good' == 'bad')
log('good' != 'bad')
log('impossible'.includes('possible'))
log('believe'.includes('lie')) // +拼接得到一个新字符串
log('very' + 'good')
log('very ' + 'good') // 得到一个你想要的字符串有多种方式
// 但是现在有现代的方式, ES6的 模板字符串
// 用法如下:
var name = 'wyb'
var a = `${name}, 你好`
log(a)
// 简单说来, 就是 ${} 会被变量替换行成新字符串 // 另外JavaScript的字符串中没有像python那样的格式化 要想使用python中那样的格式化要自己写一个 写法如下:
// JavaScript字符串格式化
String.prototype.format = function (args) {
var result = this;
if (arguments.length > 0) {
if (arguments.length == 1 && typeof (args) == "object") {
for (var key in args) {
if (args[key] != undefined) {
var reg = new RegExp("({" + key + "})", "g");
result = result.replace(reg, args[key]);
}
}
}
else {
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] != undefined) {
var reg = new RegExp("({)" + i + "(})", "g");
result = result.replace(reg, arguments[i]);
}
}
}
}
return result;
}; // 写了上面的字符串格式化函数之后就可以像下面一样直接使用类似python的字符串格式化了
var s = "this a test string for {0}".format("format")
var msg = "{0} {1} {2} msg".format("this", "is", "a test")
log(s, msg) // 字符串相当于一个 array,可以用数字下标访问
// s 的长度为 7,但是下标是从 0 开始的,所以最大下标是6
var s = 'iamgood'
log(s[0])
log(s[1])
log(s[2])
// ...
log(s[6]) // 当然也就可以和 array 一样用循环遍历了
for(var i=0; i<s.length; i++){
log(s[i]);
}
for (var v in s){
log(s[v]);
} // 字符串可以切片, 当然, array 也可以这样切片
// 语法如下
// s.slice(开始下标, 结束下标)
var s = 'iamgood'
s.slice(0, 3) // 'iam'
s.slice(1, 3) // 'am' // 省略下标参数意思是取到底
s.slice(2) // 'mgood'

3.将其他类型转化成字符串

  • toString()
  • String()
 1 var number = 10;
2 var value = true;
3 var n = null;
4 var r;
5
6 alert(String(number));  // "10"
7 alert(String(value));   // "true"
8 alert(String(n)); // "null"
9 alert(String(r));  // "undefined"
10
11
12 # toString(): 可以传递一个参数控制输出数值的基数,另外null和undefined没有这个方法
13 var num = 10;
14 alert(num.toString()); // "10"
15 alert(num.toString(2)); // "1010"
16 alert(num.toString(8)); // "12"
17 alert(num.toString(10)); // "10"
18 alert(num.toString(16)); // "a"

4.拓展:定时器

定时器:setInterval('执行的代码',间隔时间)

 1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 </head>
7 <body>
8 <script>
9 function f1(){
10 console.log(1);
11 }
12
13 // 创建一个定时器
14 //setInterval("alert(123);", 5000); // 每隔5秒弹框
15 setInterval("f1();", 2000); // 每隔2秒log出1
16 </script>
17 </body>
18 </html>

还有一些别的转义符,但极少使用,对于这种东西,不必记忆,知道有这么回事就好了。

JavaScript中的数组和字符串的更多相关文章

  1. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  2. Javascript中判断数组的正确姿势

    在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...

  3. javascript中的数组扩展(一)

     javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质    数组是按照次序排 ...

  4. JavaScript中的数组详解

    JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr= ...

  5. JavaScript中对数组和数组API的认识

    JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...

  6. JavaScript中的数组创建

    JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元 ...

  7. JavaScript中Array(数组) 对象

    JavaScript中Array 对象 JavaScript中创建数组有两种方式 (一)使用直接量表示法: var arr4 = []; //创建一个空数组var arr5 = [20]; // 创建 ...

  8. javascript中稀疏数组和密集数组

    密集数组 数组是一片连续的存储空间,有着固定的长度.加入数组其实位置是address,长度为n,那么占用的存储空间是address[0],address[1],address[2].......add ...

  9. JavaScript中对数组的操作

    原文:JavaScript中对数组的操作 一:数组的使用 1.定义:JavaScript中对数组的定义有两种形式.如: .var arr = [12,3,5,8]; .var arr = new Ar ...

随机推荐

  1. 【其他】msb-lsb-intel-motorola大小端问题

    MSB(Most Significant Bit) 最高有效位: LSB(Least Significant Bit) 最低有效位 intel格式:低字节在前 Motorola格式:高字节在前 参考1 ...

  2. Plotly绘图工具(多用于统计)

    作者:桂. 时间:2017-04-23  23:52:14 链接:http://www.cnblogs.com/xingshansi/p/6754769.html 前言 无意中考到一个小工具,网址为: ...

  3. Laravel学习之旅(三)

    视图 一.怎么新建视图: 1.视图默认存放路径:resources/views: 2.laravel模板支持原生的PHP,直接可以在resources/views新建一个PHP文件,例如: index ...

  4. Rx.NET响应式编程

    响应式编程 Rx.NET 了解下 1. 引言 An API for asynchronous programming with observable streams.ReactiveX is a co ...

  5. centos重启redis后,数据丢失

    编辑/etc/sysctl.conf ,改vm.overcommit_memory=1, 然后sysctl -p 使配置文件生效 T

  6. codeforces 724c Ray Tracing

    好题 原题: There are k sensors located in the rectangular room of size n × m meters. The i-th sensor is ...

  7. test20180921 手机信号

    题意 分析 我们用形如(l, r, v) 的三元组描述一个区间,这个区间中从l 到r 每隔v 有一个信号站. 考虑一次construct 操作,会添加一个新的区间,并可能将一个已经存在的区间分裂为两个 ...

  8. day2-Iptables笔记

    1.   iptables防火墙简介 Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入.流出.流经服务器的数 ...

  9. ssh 免 密码登录另一台机器 和 secureCRT的乱码问题

    PS: 就是你把密钥生成好以后,放入B机器中,再登录的时候就已经有了所以就不用验证了 ========================================================= ...

  10. HTTP 返回状态消息讲解

    当浏览器从 web 服务器请求服务时,可能会发生错误. 从而有可能会返回下面的一系列状态消息: 1xx: 信息 消息: 描述: 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒 ...