17个vue常用的数组方法总结与实例演示

1. join()

join(’参数‘)把数组的元素以传入的参数为分割符,转换成字符串。

let arr = [1,2,3,4,5];
let str = arr.join(',');
console.log(str) // -> '1,2,3,4,5';

2.push()和pop()

push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

let arr = ['张三','李四','王五'];
let count = arr.push('马六');
console.log(arr) // -> ['张三','李四','王五','马六']
console.log(count) // -> 4

let item = arr.pop();
console.log(item) // -> 马六;

3.shift() 和 unshift()

shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。
unshift:将参数添加到原数组开头,并返回数组的长度 。

let arr = ['张三','李四','王五'];
let item = arr.shift();
console.log(arr) // -> ['李四','王五']
console.log(item); // -> 张三

let count = arr.unshift('马六');

console.log(arr) // -> ['马六','李四','王五']
console.log(count) // -> 3

4.reverse();

将数组的数据进行反转,并且返回反转后的数组,会改变原数组

let arr = [1,2,3,4,5];
let arr1 = arr.reverse();
console.log(arr1) // -> [5,4,3,2,1]
console.log(arr) // -> [5,4,3,2,1]

5.sort();

对数组内的数据进行排序(默认为升序),并且返回排过序的新数组,会改变原来的数组

let arr = [12,2,43,5,2,5];
console.log(arr.sort()) // -> [12, 2, 2, 43, 5, 5]
// 注意:通过上面的案例,你会发现 打印的数组和原数组比较还是有变化的 [12,2,43,5,2,5] -> [12, 2, 2, 43, 5, 5];但是有没有达到我们想要的结果,这是为什么呢?
// 因为排序是针对字符的排序,先使用数组的toString()方法转为字符串,再逐位比较,3是大于12的,因为首位3>1,不要与Number型的数据排序混淆。
5.1那如果需要数值排序怎么办呢?

// 如果需要数值排序,sort(callback) 需要传入一个回调涵数,该函数应该具有两个参数,比较这两个参数,然后返回一个用于说明这两个值的相对顺序的数字(a-b);
例如:
let arr = [12,2,43,5,2,5];
console.log(arr.sort((a,b)=>a-b)) // -> [2, 2, 5, 5, 12, 43]

6.slice();

截取指定位置的数组,并且返回截取的数组,不会改变原数组

// 注意:slice(startIndex, endIndex)可以有两个参数,startIndex为必选,表示从第几位开始;endIndex为可选,表示到第几位结束(不包含endIndex位),省略表示到最后一位;startIndex和endIndex都可以为负数,负数时表示从最后一位开始算起,如-1表示最后一位。
let arr =  ['张三','李四','王五','马六'];
console.log(arr.slice(1,3)); // -> ['李四', '王五']
console.log(arr) // -> ['张三','李四','王五','马六']; 原数组是没有改变的。

7.splice();

向数组中添加,或从数组删除,或替换数组中的元素,然后返回被删除/替换的元素。

// 注意:splice(start,num,val1,val2,...); 所有参数全部可选。和 slice 相比 splice 是会改变原数组的。
// start 是开始位置,可以为负数,-1就代表从最后一位开始,num代表要删除或者替换的长度,不能为负数。
let arr = ['张三','李四','王五','马六'];
console.log(arr.splice(2,1)) // -> ['王五']
console.log(arr) // -> ['张三','李四','马六']

let arr = ['张三','李四','王五','马六'];
console.log(arr.splice(2,1,'七郎')) // -> ['王五']
console.log(arr) // -> ['张三', '李四', '七郎', '马六']

8.toString();

将数组转换成字符串,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调用,如果手动调用,就是直接转为字符串。不会改变原数组

let arr = [1,2,3,4,5,6];
console.log(arr.toString()) // -> '1,2,3,4,5,6'
// 注意:没有参数。

9.indexOf();

根据指定的数据,从左向右,查询在数组中出现的位置,如果不存在指定的数据,返回-1,找到了指定的数据返回该数据的索引

// 注意:indexOf(value, start);value为要查询的数据;start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1

let arr = ['张三','李四','王五','马六'];
console.log(arr.indexOf('李四')) // -> 1
console.log(arr.indexOf('李四',2)) // -> -1
10.forEach()
ES5新增的方法,用来遍历数组,没有返回值,

// 注意:forEach(callback);callback默认有三个参数,分别为value(遍历到的数组的数据),index(对应的索引),self(数组自身)。
let arr = ['张三','李四','王五','马六']
let a = arr.forEach((item,index,self)=>{
    console.log(value + "--" + index + "--" + (arr === self));
})
// 打印结果为:
// 张三--0--true
// 李四--1--true
// 王五--2--true
// 马六--3--true
console.log(a);  // -> undefined---forEach没有返回值
//该方法为遍历方法,不会修改原数组

11.map();

1.同forEach功能;
2.map的回调函数会将执行结果返回,最后map将所有回调函数的返回值组成新数组返回。

//注意:map(callback);callback默认有三个参数,分别为value,index,self。跟上面的forEach()的参数一样
let arr = ['张三','李四','王五','马六'];
let arr1 = arr.map(item => {
    return '你好:'+item
})
console.log(arr1) // -> ['你好:张三', '你好:李四', '你好:王五', '你好:马六']

12.filter();

1.同forEach功能;2.filter的回调函数需要返回布尔值,当为true时,将本次数组的数据返回给filter,最后filter将所有回调函数的返回值组成新数组返回(此功能可理解为“过滤”)。

// 注意:filter(callback);callback默认有三个参数,分别为value,index,self。
let arr = [1,2,3,4,5,6];
let arr1 = arr.filter((value,index,self)=>{
    console.log(item) // -> 1,2,3,4,5,6
    console.log(index) // -> 0,1,2,3,4,5
    console.log(self) // -> [1,2,3,4,5,6]
    return item > 3
})

console.log(arr1) // -> [4,5,6]

13.find();

数组的循环,查找到符合条件的值并且打断循环返回找到的值;

let arr = ['张三','李四','王五','马六'];
let str = arr.find(item => item == '李四');
console.log(str); // -> '李四'

14.findIndex();

数组的循环,查找到符合条件的索引并且打断循环返回找到的索引值

let arr = ['张三','李四','王五','马六'];
let index = arr.findIndex(item => item == '李四');
console.log(index); // -> 1;

15.every();

判断数组中每一项是否都满足条件,只有所有项都满足条件,才会返回true。

// 注意: every()接收一个回调函数作为参数,这个回调函数需要有返回值,every(callback);callback默认有三个参数,分别为value,index,self。
let arr = [1,2,3,4,5,6];
let bool = arr.every(item => item > 0);
console.log(bool); // -> true;

let bool = arr.every(item => item > 3);
console.log(bool); // -> false;

16.some();

判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。否侧就会返回false

//注意: some()接收一个回调函数作为参数,这个回调函数需要有返回值,some(callback);callback默认有三个参数,分别为value,index,self。
let arr = [1,2,3,4,5,6];
let bool = arr.some(item => item > 3);
console.log(bool) // -> true;

let bool = arr.some(item => item > 6);
console.log(bool) // -> false;

17.reduce();

数组的第一项开始,逐个遍历到最后,迭代数组的所有项,然后构建一个最终返回的值。

// 注意: 参数:reduce()接收一个或两个参数:第一个是回调函数,表示在数组的每一项上调用的函数;第二个参数(可选的)作为归并的初始值,被回调函数第一次执行时的第一个参数接收。 reduce(callback,initial);callback默认有四个参数,分别为prev,now,index,self。 callback返回的任何值都会作为下一次执行的第一个参数。 如果initial参数被省略,那么第一次迭代发生在数组的第二项上,因此callback的第一个参数是数组的第一项,第二个参数就是数组的第二项。

let arr = [10,20,30,40,50];
let sum = arr.reduce((prev,now) => prev+now)

console.log(sum); // -> 150;

let sum = arr.reduce((prev,now) => prev+now,110)

console.log(sum) 

本文为大家讲解了17个vue常用的数组方法总结与实例演示,包括:VUE数组转换字符串,VUE数组遍历,VUE数组过滤,VUE数组查询等功能,更多关于VUE数组操作请查看下面的相关链接

(0)

相关推荐

  • vue 数组添加数据方式

    目录 vue 数组添加数据 数据添加分为三种方法 动态向数组中添加对象(关于v-for,input和push) 核心:深拷贝 vue 数组添加数据 数据添加分为三种方法 1.unshift() 2.push() 3.splice() <template>       <div>         <ul>           <li v-for="(time,index) of listTable" :key="index"

  • vue给数组中对象排序 sort函数的用法

    目录 vue给数组中对象排序 sort函数 vue小技巧:简单排序和对象排序 对于数组里面全是number 对于一个对象 有多种类型 vue给数组中对象排序 sort函数 开发穿梭框的时候,需要将左侧选中的数据排序后添加到右侧 先看代码吧,后面解释 originalData为左侧选择的数据: var originalData =[{name: 'Tom'},{name: 'Andy'},{name: 'Marry'},{name: 'Tina'}]; 先给每个对象添加一个排序order: for

  • vue深度优先遍历多层数组对象方式(相当于多棵树、三级树)

    目录 深度优先遍历多层数组对象 比如树结构是这样的 vue遍历包含数组的对象 请求来拿到后数据格式是下面这种 最终在html中这样遍历 深度优先遍历多层数组对象 这个方法如果是对于下面的三级树的话可以拿到爷爷Id,自己Id,父亲Id:其实如果想要拿到label的话就把data.id换成data.label就行了 function treeFindPath(tree, func, path = []) {         if (!tree) return []         for (cons

  • Vue判断字符串(或数组)中是否包含某个元素的多种方法

    目录 方法一:includes方法(数组,字符串都可以) 方法二:indexOf方法(数组,字符串都可以) 方法三 :search方法 方法四:match方法 方法五:text方法 方法六:exec方法(数组可以,字符串未测) 方法七:some() 方法 总结 Vue判断字符串中是否包含某个字符串,方法有好多种,这里暂时先说我知道的两种,以后知道了别的,会继续更新! 方法一:includes方法(数组,字符串都可以) var str = "Hello World!"; if(str.i

  • Vue中直接操作数组索引不奏效的问题解读

    目录 Vue操作数组索引不奏效 1.案例 2.解释 3.如何操作数组 4.深层原因 更新数组或对象不生效 新增对象属性不生效 更新数组元素不生效 Vue操作数组索引不奏效 1.案例 我们首先创造一个数组hobby并展示 data:{ hobby:["抽烟" , "喝酒" , "烫头"] } <ul> <li v-for="(item , index) in hobby">{{item}}</li&

  • vue 如何删除数组中的某一条数据

    目录 删除数组中的某一条数据 删除普通数组 删除数组对象 使用splice()删除数组中的一个数据 删除数组中的某一条数据 删除普通数组 let arr = [1,2,3,4,5]; //方法一 let index = arr.indexOf('3'); arr.splice(index, 1) //打印结果 [1,2,4,5] //方法二 let index = arr .findIndex(item => {             if (item == '3') {          

  • Vue中对数组和对象进行遍历和修改方式

    目录 对数组和对象进行遍历和修改 1.对数组进行循环 2. 修改数组的时候,不能直接通过下标去增加修改删除 3.对对象进行循环 4.增加对象的时候 修改数组和对象的特殊情况以及修改方法 修改数组的两个特殊情况 修补方法 对数组和对象进行遍历和修改 1.对数组进行循环 v-for进行循环,有两个参数(item,index) 注意:template可以成为占位符,在DOM里面不显示 2. 修改数组的时候,不能直接通过下标去增加修改删除 (1)可以用过push/pop/shift/unshift/sp

  • Vue不能watch数组和对象变化解决方案

    目录 Vue 能监听数组的情况 Vue 无法监听数组变化 举例无法监听数组变化的情况 Vue 无法监听数组变化的解决方案 Vue 监听对象 Vue 设置监听对象 Vue 能监听数组的情况 Vue 监听数组和对象的变化(vue2.x) vue 实际上可以监听数组变化,比如: 直接 = 赋值 data () { return { watchArr: [], }; }, watch: { watchArr (newVal) { console.log('监听:' + newVal); } }, cre

  • 17个vue常用的数组方法总结与实例演示

    1. join() join(’参数‘)把数组的元素以传入的参数为分割符,转换成字符串. let arr = [1,2,3,4,5]; let str = arr.join(','); console.log(str) // -> '1,2,3,4,5'; 2.push()和pop() push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度.pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项. let arr = ['张三','李四

  • 在Vue中获取自定义属性方法:data-id的实例

    获取自定义属性的方法: 第一步:首先在标签上绑定上@click="getDateId(item.id)",并将属性值传到绑定的事件里面 第二步:在标签上继续绑定:date-id = "item.id"属性 第三步:在<script>里面的属性methods里面添写上事件函数 getDateId(id){} 在事件函数里面获取id的值即可 <template> <h2 class="left t-title" @cli

  • vue常用高阶函数及综合实例

    一. 常用的数组的高阶函数 假设, 现在有一个数组, 我们要对数组做如下一些列操作 找出小于100的数字: 将小于100的数字, 全部乘以2: 在2的基础上, 对所有数求和: 通常我们会怎么做呢? <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> &l

  • JS数组方法concat()用法实例分析

    本文实例讲述了JS数组方法concat()用法.分享给大家供大家参考,具体如下: 数组方法concat() concat()可以基于当前数组中的所有项创建一个新数组.即这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组. 没有给concat方法传递参数的情况下,它只是复制当前数组并返回副本. 如果传递的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中 如果传递的值是不是数组,这些值会被简单的添加到数组的末尾 注意:该方法不会改变先后的数

  • JS数组方法reverse()用法实例分析

    本文实例讲述了JS数组方法reverse()用法.分享给大家供大家参考,具体如下: reverse()方法 定义:反转数组项的顺序 语法: arr.reverse() 参数:/ 返回值:返回该数组的引用. 代码如下: var arr1 = [1, 2, 3, 4, 5, 6]; var arr2 = ['A', 'B', 'C']; var arr3 = ['AAA', 'BBB', 'CCC']; var arr4 = ['Hello', 'World']; Array.prototype.c

  • JS数组方法join()用法实例分析

    本文实例讲述了JS数组方法join()用法.分享给大家供大家参考,具体如下: join()方法 定义和用法: join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. 语法:arrayObject.join(separator) 参数:可选,指定要使用的分隔符. 注:不给join()方法传入任何值,或者给它传入undefined,则使用逗号作为分隔符. IE7及更早版本会错误的使用字符串"undefined"作为分隔符. 数组中的某一项是null或u

  • JS数组方法slice()用法实例分析

    本文实例讲述了JS数组方法slice()用法.分享给大家供大家参考,具体如下: slice()方法 slice(),它能基于当前数组中的一个或多个创建一个新数组.可以接受一或两个参数,即要返回的起始和结束位置. 一个参数:slice()方法返回从该参数指定位置开始到当前数组末尾的所有项. 两个参数:该方法返回起始和结束位置之间的项(但不包括结束位置的项). slice不会影响原始数组. 结束位置小于起始位置,返回空数组. 可以接受负数,用数组长度加上该负数来确定相应位置. var arr = [

  • JavaScript基础进阶之数组方法总结(推荐)

    数组常用方法总结: 下面我只总结了es3中常用的数组方法,一共有11个.es5中新增的9个数组方法,后续再单独总结. 1个连接数组的方法:concat() 2个数组转换为字符串的方法:join().toString() 6个增删数组元素的方法:pop().push().shift().unshift().slice().splice() 2个数组排序方法:reverse().sort() 连接数组的方法: 1.concat() 作用:连接两个数组,合并为一个新数组. 用法:arr1.concat

  • JavaScript常见数组方法之如何转置矩阵

    目录 一.常见二维数组操作 创建与遍历 [案例]二维数组转置 二.常见数组方法 栈和队列方法 检索方法 数组转字符串 其他方法 总结 今天这篇文章就是来和大家详细聊聊JavaScript常见数组方法,不知道大家有没有学过线性代数呢,如果学过那么矩阵转置那可就太熟悉了. 今天我想试试能不能用数组来实现矩阵转置呢? 想知道,那就接着往下看吧.希望大家读完有所收获,那我辛苦码字也就值了. 一.常见二维数组操作 创建与遍历 在前面的篇章中,已经学习了一维数组的各种创建方式,了解一维数组如何创建后,二维数

  • 浅谈Vue响应式(数组变异方法)

    前言 很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法. 看来想让女神自己动,关键得用对方法.虽然在官方文档中已经给出了方法,但是在下实在好奇的紧,想要解锁更多姿势的话,那就必须先要深入女神的心,于是乎才有了去探索Vue响应式原理的想法.(如果你愿意一层一层地剥开我的心.你会发现,你会讶异-- 沉迷于鬼哭狼嚎 无法自拔QAQ). 前排提示,Vue的响应式原理主要是使用了ES5的

随机推荐