push()
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
此方法改变数组的长度。
在数组起始位置添加元素请使用 unshift() 方法。
1.push方法是数组中的
var arr = []
var length = arr.push('first')
console.log(arr) // ['first']
console.log(length) // 1 push方法会改变原有数组,且返回改变后数组的长度
2.尝试添加各种元素
var arr = []
arr.push({})
console.log(arr) // [Object]
arr.push([],{},'str',1,null,undefined) // 添加多个元素用逗号隔开
console.log(arr) // Array, Object, 1, null, undefined
3.添加多个元素,ES6扩展运算符
var arr = [1,2,3]
var nArr = ['first', 'second', 'third'] // 想依次添加每个值到数组中
// arr.push(nArr) 如果这样添加会给arr添加多一个数组元素,arr.length = 4
arr.push(...nArr) ES6的方法数组扩展
console.log(arr) // [1,2,3,'first', 'second', 'third']
// 这种扩展方法仅对Array有效
includes()
返回布尔值
语法:
string.includes(searchvalue, start)
第一个参数必需,要查找的字符串。
第二个参数可选,设置从那个位置开始查找,默认为 0。
1.数组
includes 可以判断一个数组中是否包含某一个元素,并返回true 或者false。
['a','b','c'].includes('a')
true
['a','b','c'].includes(1)
false
2.字符串
查找字符串是否包含 "Runoob":
var str = "Hello world, welcome to the Runoob。";
var n = str.includes("Runoob");
n 输出结果:
true
filter()
filter() 方法返回一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。 filter() 不会改变原始数组。
// 新增时去掉表格里的某一字段
let removeData = this.dataForm.filter(v => {
return v !== 'deviceNo';
});
Map()方法
Array.prototype.map():
map()方法创建一个新数组,
返回值:
一个由原数组每个元素执行回调函数的结果组成的新数组。
语法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
callback(函数会被自动传入三个参数:数组元素,元素索引,原数组本身。)
生成新数组元素的函数,使用三个参数:
currentValue 数组中正在处理的当前元素
index可选,数组中正在处理的到期元素的索引
array可选,map 方法调用的数组。
thisArg可选,执行 callback 函数时值被用作this。
eg:
1.使用map重新格式化数组中的对象
var kvArray = [{key: 1, value: 10},
{key: 2, value: 20},
{key: 3, value: 30}];
var reformattedArray = kvArray.map(function(obj) {
var rObj = {};
rObj[obj.key] = obj.value;
return rObj;
});
console.log(reformattedArray)
// reformattedArray 数组为: [{1: 10}, {2: 20}, {3: 30}],
// kvArray 原数组未被修改:
// [{key: 1, value: 10},
// {key: 2, value: 20},
// {key: 3, value: 30}],
eg:下面的例子演示如何在一个 String 上使用 map 方法获取字符串中每个字符所对应的 ASCII 码组成的数组:
var map = Array.prototype.map
var a = map.call("Hello World", function(x) {
return x.charCodeAt(0);
})
// a 的值为 [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
foEach()方法
foreach()方法被调用时不会改变原数组,返回原数组。
描述:
forEach() 方法按升序为数组中含有效值的每一项执行一次 callback 函数,那些已删除或者未初始化的项将被跳过。(注:比如应该数组程度为4,我只想循环到长度为2的截止foreach是不行的,for in可以)
'语法:'
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
currentValue:数组中正在处理的当前元素
index 可选,数组中正在处理的当前元素的索引。
array 可选,forEach() 方法正在操作的数组。
备注: 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。如果你需要中止或跳出循环,forEach() 方法不是应当使用的工具。
若你需要提前终止循环,你可以使用:
一个简单的 for 循环
for…of / for…in 循环
Array.prototype.every()
Array.prototype.some()
Array.prototype.find()
Array.prototype.findIndex()
只要条件允许,也可以使用 filter() 提前过滤出需要遍历的部分,再用 forEach() 处理。
1.将for循环转换为foreach循环:
const items = ['item1', 'item2', 'item3'];
const copy = [];
// before
for (let i=0; i<items.length; i++) {
copy.push(items[i]);
}
// after
items.forEach(function(item){
copy.push(item);
});
2.如果使用 promise 或 async 函数作为 forEach() 等类似方法的 callback 参数,最好对造成的执行顺序影响多加考虑,否则容易出现错误。
let ratings = [5, 4, 5];
let sum = 0;
let sumFunction = async function (a, b) {
return a + b;
}
ratings.forEach(async function(rating) {
sum = await sumFunction(sum, rating);
})
console.log(sum);
// Expected output: 14
// Actual output: 0
split() 一个字符串分割成字符串数组
注意: split() 方法不改变原始字符串。
var str="How are you doing today?";
var n=str.split(" ");
console.log(n)//How,are,you,doing,today?
var str1="122,供热,769567693933252608,用地"
var arr=str1.split(",")
console.log(arr)//['122', '供热', '769567693933252608', '用地']
JSON.stringify()将对象、数组转换成字符串。
JSON的常规用途是同web服务器进行数据交换,在向web服务器发送数据时数据必须是字符串。
通过JSON.stringify()把js对象转换为字符串。
var obj = { name: "Bill", age: 62, city: "Seatle" };
// {"name":"Bill","age":62,"city":"Seatle"}```
JSON.parse()将字符串转成 json 对象
JSON通常由于与服务器交换数据,接收服务器数据时一般是字符串。可以使用JSON.parse()方法将数据转换为js对象。
var str = '{"name":"小明","age":18}';
var obj = JSON.parse(str);
// {name:"小明",age:18}```