js数组的深入

1、数组中的哪些方法是响应式的?

因为Vue是响应式的,所以当数据发生变化时,Vue会自动检测数据变化,视图会发生对应的更新

Vue中包含了一组观察数组编译的方法,使用它们改变数组也会触发视图的更新

1)push方法  ==> 响应式
 this.letters.push('F');

2)pop (删除数组中的最后一个元素) ==> 响应式
 this.letters.pop();
 
3)shift() 删除数组中的第一个元素
 this.letters.shift();

4)unshift() : 在数组的最前面添加一个元素
 
5)splice()的作用:删除元素、插入元素、替换元素
删除元素时:splice(start,num) 表示从start开始,删除num个元素。如果不传值,表示删除后面的所有元素
替换元素:splice(start,num,’a','b','c'): 第二个参数表示要替换几个元素,后面的 ‘a','b'表示要替换的元素
插入元素:splice(1,0,'x','y','z') : 第二个参数传入0,表示在第一个元素后面插入‘x','Y','z'

6)sort():对数组进行排序

7)reverse():反转数组
this.letters.reverse();

8)注意通过索引值来修改数组的元素,不是响应式的
//this.letters[0] = "aaa";
//可以通过以下两种方式解决
this.letters.splice(0,1,"aaa");
Vue.set(this.letters,0,"aaa");


2、JavaScript高阶函数的使用

1)循环的三种方式
for(let i=0;i<this.books.length;i++){
}

for(let i in this.books){
  // i 是数组中元素的索引
}

for(let item of this.books){
 // item 是数组中的元素
}

2)filter的使用
// filter的回调函数有一个要求:必须返回一个boolean值
// 当返回值为true时,函数内部会自动将这次回调的n加入到新的数组中
// 当返回值为false时,函数内部会过滤掉这次的n
// 回调函数的参数 n: 遍历过程中,每次遍历到的元素
let newNums = nums.filter(function (n) {
  return n<100;
})
console.log(newNums);

3)map的使用
// 对数组中的所有元素做某个操作,然后放到新的元素中
let newNum2 = newNums.map(function (n) {
  return n*2;
})
console.log(newNum2);

4)reduce的使用
//作用:对数组中的所有内容进行汇总
//reduce(参数一,参数二) 参数一:函数 参数二:初始值
let total = newNum2.reduce(function (preValue,n) {
  return preValue+n;
},0)
console.log(total);

//第一次:preValue:0  n:20
//第二次:preValue:20  n:40
//第三次:preValue:60  n:60
//第四次:preValue:120  n:80
原文地址:https://www.cnblogs.com/houchen/p/14425586.html