从字符串提取一个列表
2.从字符串提取一个列表
==================
**知识点**
1.indexOf()
2.substring()和substr()
3.split()
4.forEach()
5.trim()
-------------------------------------------------
1.indexOf()
-----------
- *功能*: 返回数组中某个指定的元素第一次出现的位置
- *语法*: indexOf(item,start):
- *参数*: item要查询的字符串, start起始查询的索引,默认0
- *返回值*: 如果在数组中没找到指定元素则返回 -1。
- *提示*: 如果你想查找字符串最后出现的位置,请使用 `lastIndexOf()` 方法
- *建议*: 可用于快速确定字符串是否存在指定的字符串
--------------------------------------------------------------
2.substring() / substr()
------------------------
- *功能*: 二者功能类似, 返回指定索引区间内的字符串
- *语法*:
+ substring(start, end): 返回起始索引与结束索引之间的字符
+ substr(start, length): 返回从指定索引开始,截取指定长度的字符串
- *场景*: substring()效率理论上会更高一些
--------------------------------------------------------------
3.split()
---------
- *功能*: 把一个字符串分割成字符串数组
- *语法*: string.split(separator,limit)
- *参数*: separator分隔符:默认为空格,可自定义, limit: 限制返回的元素数量
- *返回*: 返回数组Array
- *提示*: 数组中有一个`join()`函数与它的功能相反,将数组拼装为字符串
--------------------------------------------------------------
4.forEach()
-----------
- *功能*: 遍历数组的每个元素,并将元素传递给回调函数
- *语法*: array.forEach(function(value, index, arr), this)
- *参数*: 必须是一个回调函数,有三个参数
+ value: 必需,当前元素
+ index: 可选,当前元素的索引值
+ arr: 可选,当前元素所属的数组对象
+ this: 可选,默认`this`,为空/`undefined`用this值
- *返回*: 无
- *场景*: 遍历数组
- *提示*: 遍历数组,还可以用for/for~in/for-of/,但都没有forEach()方便
--------------------------------------------------------------
5.trim()
--------
- *功能*: 去除字符串前后空白字符
- *语法*: string.trim()
- *提示*: IE9以下版本不能使用
--------------------------------------------------------------
### 示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>从字符串提取一个列表</title>
</head>
<body>
<script>
var brands = 'Mobile brand lists: iPhone, HUAWEI, MI, OPPO, VIVO.';
// 目标是生成: [iPhone, HUAWEI, MI, OPPO, VIVO]
// 获取切割的起始位置, indexOf('str'), 返回指定字符串在原串中首次出现的索引
var start = brands.indexOf(':');
//获取目标串的结束位置, indexOf()第二个参数是查询的起始索引,默认从0开始
var end = brands.indexOf('.', start+1);
// 方法1: 传统模式
// 获取到指定区间的字符串,substring(起始索引, 结束索引),start+1跳过冒号
var lists = brands.substring(start+1, end);
//使用','切割字符串, 将获取到的每一个字符串填充到一个数组中
var brandArr = lists.split(',');
// 遍历数组,并清理每个子串的空格
brandArr.forEach(function (value, index, array) {
array[index] = value.trim();
});
// 查看最终生成的数组列表
console.log(brandArr);
// 方法2:
// 也可以使用substr(起始索引,截取长度)
var lists1 = brands.substr(start+1, end-(start+1)).trim();
// 使用正则,不需要再遍历数组,/\s*,\s*/:匹配逗号前后0或多个空白字符
var brandArr1 = lists1.split(/\s*,\s*/);
// 查看生成的数组列表
console.log(brandArr1);
// 方法3: 链式调用进一步简化代码
var brandArr3 = brands.substr(start+1, end-(start+1)).trim().split(/\s*,\s*/);
// 查看生成的数组列表
console.log(brandArr3);
</script>
</body>
</html>
```