广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >vue中数组遍历方法forEach和map怎么用
  • 605
分享到

vue中数组遍历方法forEach和map怎么用

2024-04-02 19:04:59 605人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关Vue中数组遍历方法forEach和map怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言forEach和map是数组的两个方法,作用都是遍

这篇文章给大家分享的是有关Vue数组遍历方法forEach和map怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、前言

forEach和map是数组的两个方法,作用都是遍历数组。在vue项目的处理数据中经常会用到,这里介绍一下两者的区别和具体用法示例。

二、代码

1. 相同点

  • 都是数组的方法

  • 都用来遍历数组

  • 两个函数都有4个参数:匿名函数中可传3个参数item(当前项), index(当前项的索引), arr(原数组),还有一个可选参数this

  • 匿名函数中的this默认是指向window的

  • 对空数组不会调用回调函数

  • 不会改变原数组(某些情况下可改变)

2. forEach

(1) 没有返回值。

var a = [1,2,3,4,5]
var b = a.forEach((item) => {
  item = item * 2
})
console.log(b)
// undefiined

(2) 可改变原数组的情况

下面来看几个例子:

var a = [1,2,3,4,5]
a.forEach((item) => {
  item = item * 2
})
console.log(a)
// [1,2,3,4,5]

这里原数组并没有发生改变。

var a = [1,'1',{num:1},true]
a.forEach((item, index, arr) => {
  item = 2
})
console.log(a)
// [1,'1',{num:1},true]

这里修改item的值,依然没有修改原数组。

var a = [1,'1',{num:1},true]
a.forEach((item, index, arr) => {
  item.num = 2
  item = 2
})
console.log(a)
// [1,'1',{num:2},true]

当修改数组中对象的某个属性时,发现属性改变了。

为什么会这样呢?

这里就要引入栈(stack)内存和堆(heap)内存的概念了,对于js中的基本数据类型,如String,Number,Boolean,Undefined,Null是存在于栈内存中的,在栈内存中储存变量名及相应的值。而Object,Array,Function存在于堆内存中,在堆内存中储存变量名及引用位置。

在第一个例子中,为什么直接修改item无法修改原数组呢,因为item的值并不是相应的原数组中的值,而是重新建立的一个新变量,值和原数组相同。

在第二个例子中,数组中的对象的值也没有改变,是因为新创建的变量和原数组中的对象虽然指向同一个地址,但改变的是新变量的值,即新对象的值为2,原数组中的对象还是{num:1}。

在第三个例子中,由于对象是引用类型,新对象和旧对象指向的都是同一个地址,所以新对象把num变成了2,原数组中的对象也改变了。

var a = [1,2,3,4,5]
a.forEach((item, index, arr) => {
  arr[index] = item * 2
})
console.log(a)
// [2,4,6,8,10]

在回调函数里改变arr的值,原数组改变了。

这个例子和例三其实同理,参数中的arr也只是原数组的一个拷贝,如果修改数组中的某一项则原数组也改变因为指向同一引用地址,而如果给参数arr赋其他值,则原数组不变。

其实想要知道参数中的item和arr是不是重新创建的变量,在回调函数中打印就知道了。

(3) vue中的应用

在处理数据时我经常用到这个方法,因为数据的传递以JSON格式,经常会收到数组中包含许多对象的数据。而后端传给我的数据有时候需要处理,例如把时间戳格式化为正常时间,代码如下:

// utils.js
const fORMatTime = date => {
  var newDate = new Date();
  newDate.setTime(date * 1000);
  const year = newDate.getFullYear()
  const month = newDate.getMonth() + 1
  const day = newDate.getDate()
  const hour = newDate.getHours()
  const minute = newDate.getMinutes()
  const second = newDate.getSeconds()
 
  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

export {
  formatTime
}
// 得到的数据格式
[
  {add_time: 1541495677, balance: 14, bn: "300708", cprice: "12.39"}
]
// index.vue
import axiOS from 'axios'
import { formatTime } from '@/lib/utils'
export default {
  data() {
    dataList: []
  },
  methods: {
    getData() {
     axios.get('/user?ID=12345')
     .then(function (res) {
       if(res.code == 200) {
        res.data.forEach((item) => {
          item.add_time = formatTime(item.add_time)
        }
        this.dataList = res.data
       }
     })
     .catch(function (err) {
      console.log(err);
     });
    }
  }
}

这时候原始数据的值也改变了,变成了格式化后的时间。

3. map

(1) 返回一个经过处理后的新数组,但不改变原数组的值。

var a = [1,2,3,4,5]
var b = a.map((item) => {
  return item = item * 2
})
console.log(a) // [1,2,3,4,5]
console.log(b) // [2,4,6,8,10]

(2) map中可改变原数组的情况和原理与forEach相同

(3) vue中的应用

有这样一个需求,充值金额需要在整数的基础上随机减去100或加上100,这时我在原始的数据基础上需要一个经过处理的新数组。

export default {
  data() {
    moneyList: [1000,2000,5000,10000,20000,50000]
  },
  computed: {
    moneyList_new() {
      return this.moneyList.map((item) => {
        const random = Math.random() > 0.5 ? 1 : -1;
        return Math.floor(Math.random()*100) * random + item;
      })
    }
  }
}

实际渲染处理过的数组就可以了~

感谢各位的阅读!关于“vue中数组遍历方法forEach和map怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: vue中数组遍历方法forEach和map怎么用

本文链接: https://www.lsjlt.com/news/75390.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue中数组遍历方法forEach和map怎么用
    这篇文章给大家分享的是有关vue中数组遍历方法forEach和map怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言forEach和map是数组的两个方法,作用都是遍...
    99+
    2022-10-19
  • react中使用forEach或map两种方式遍历数组
    目录使用forEach或map两种方式遍历数组forEachmap循环遍历数组时map和forEach的区别forEach情况map 情况使用forEach或map两种方式遍历数组 ...
    99+
    2022-11-13
  • PHP怎么用foreach()遍历数组
    这篇文章将为大家详细讲解有关PHP怎么用foreach()遍历数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。foreach()foreach()是一个用来遍历数组中数据的最简单有效的方法。<ph...
    99+
    2023-06-17
  • Vue中如何使用foreach遍历数组
    本篇内容介绍了“Vue中如何使用foreach遍历数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在js中遍历数组//定义班次详细数组&n...
    99+
    2023-07-04
  • 怎么在jQuery中使用map方法遍历数组
    怎么在jQuery中使用map方法遍历数组?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的链式...
    99+
    2023-06-14
  • php foreach遍历数组的方法是什么
    PHP中使用foreach语句来遍历数组。示例代码如下:```$colors = array("Red", &q...
    99+
    2023-09-26
    php
  • 如何在Vue中使用foreach遍历数组
    今天就跟大家聊聊有关如何在Vue中使用foreach遍历数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在js中遍历数组//定义班次详细数组  var ...
    99+
    2023-06-15
  • Vue中foreach数组与js中遍历数组的写法说明
    Vue foreach数组与js中遍历数组的写法 场景 Vue中使用Axios发送get或者post请求,发送请求时需要在js中 对请求参数进行遍历并处理。 接收响应时需要对响应结果...
    99+
    2022-11-12
  • jQuery遍历map()方法怎么用
    jQuery中的map()方法可以用于遍历一个数组或对象并对其进行处理后返回一个新的数组或对象。以下是使用map()方法的示例:1....
    99+
    2023-10-11
    jQuery
  • JS数组遍历中for,forin,forof,map,forEach各自的使用方法与优缺点
    JS数组遍历普通函数 优点:支持流程控制(break、continue、return) for const arr = ["A", "B", "C"] for(let i = 0;...
    99+
    2022-11-13
  • PHP循环中如何使用foreach()方法遍历数组
    这篇文章主要介绍了PHP循环中如何使用foreach()方法遍历数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。foreach():for...
    99+
    2022-10-19
  • 怎么在php中使用foreach循环遍历数组
    本篇文章为大家展示了怎么在php中使用foreach循环遍历数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、W...
    99+
    2023-06-14
  • Vue中构造数组数据之map和forEach方法实现
    目录一、手写实现二、二者区别三、使用场景数组操作是前端最重要的数据操作,构造数组数据,又是数组操作中很常见的。本文将梳理下map和forEach方法在Vue项目中的使用。 想要深入理...
    99+
    2022-11-13
  • mybatis怎么使用foreach遍历list集合或者array数组
    这篇文章主要介绍“mybatis怎么使用foreach遍历list集合或者array数组”,在日常操作中,相信很多人在mybatis怎么使用foreach遍历list集合或者array数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-06-20
  • 怎么在jquery中使用each方法遍历数组
    本篇文章为大家展示了怎么在jquery中使用each方法遍历数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的链式...
    99+
    2023-06-14
  • 怎么在jquery中使用$.each方法遍历json数组
    本篇文章为大家展示了怎么在jquery中使用$.each方法遍历json数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。js有什么特点1、js属于一种解释性脚本语言;2、在绝大多数浏览器的支持下,...
    99+
    2023-06-14
  • JavaScript如何使用map()方法来遍历一个数组里的项
    这篇文章主要介绍JavaScript如何使用map()方法来遍历一个数组里的项,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用 map() 方法来遍历一个数组里的项var ...
    99+
    2022-10-19
  • jquery中怎么遍历对象和数组
    jquery中怎么遍历对象和数组,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JS forEach方法arr[].forEach(functi...
    99+
    2022-10-19
  • JS数组中有什么内置遍历方法
    这篇文章将为大家详细讲解有关JS数组中有什么内置遍历方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。forEach()(ES6)方法forEach()(ES6)方法对数组的每个元素执行一次给定的函数。&...
    99+
    2023-06-25
  • Vue中对数组和对象进行遍历和修改方式
    目录对数组和对象进行遍历和修改1、对数组进行循环2、 修改数组的时候,不能直接通过下标去增加修改删除3、对对象进行循环4、增加对象的时候修改数组和对象的特殊情况以及修改方法修改数组的...
    99+
    2022-11-13
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作