VueX中直接修改数据报错,修改一维数组,二维数组,报错的原因
直接修改state中的的数据是不被允许的,会报错
这个时候可以使用三种种方式处理
第一种:使用拓展运算符,深拷贝一维数组或对象
var arrA = [1,2,3,4]
var a = [...arr]
||
var ObjB = {a:1,b:2}
var b = {...ObjB}
如果只是数组
可以使用slice,深拷贝
var arrA = [1,2,3,4]
var a = arrA .slice(0)
可以concat,深拷贝
var arrA = [1,2,3,4]
var a = a.concat(arrA)
第二种:使用Object.assign()浅拷贝数组或对象
var arrA = [1,2,3,4]
var a = Object.assign([], arrA)
||
var ObjB = {a:1,b:2}
var b = Object.assign({}, objB)
在vuex中这些操作是可以的,不会报错。
如果是二维数组依然会报错,因为二维数组的实际内容是第二维,实际引用地址是第一维的,而拷贝的只有一维的引用地址,所以如果改变二维数组的内容,依然会触发报错
那二维数组怎么操作,可以通过第三种方式
var arrC= [{a:1},[1,2,3]]
var arrD = JSON.parse(JSON.stringify(arrC))
这样就可以了,但是仍然不能直接赋值,去覆盖整个二维数组,只能单个赋值来操作数组内的某个元素
或者使用循环来进行二维数组的深拷贝,通过push添加到一个新的数组内,新的数组也是深拷贝过的,不会和原数组有关联
VueX中直接修改数据报错,修改一维数组,二维数组,报错的原因的更多相关文章
- 10-20C#基础---一维、二维数组&&冒泡排序
一.一维数组 1.定义:是某一种数据类型的数据的组合,数组用来分组基本类型或相同类型的对象.数组中的实体叫做数组的元素或成员. 2. 格式:int[ ] shuzu=new int[ 6];存放int ...
- Java一维与二维数组的拷贝与排序
Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...
- Java基本语法-----java数组(一维数组二维数组)
嘿嘿!你们懂的,又是图片,委屈大家了. java数组(一维数组二维数组) [正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个"顶"字,你就 ...
- C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,
//函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序. //相当于数组的冒泡排序. #include <stdio.h> #include <stdlib.h> ...
- php获取一维,二维数组长度的方法(有实例)
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数c ...
- 剑指offer 1.数组 二维数组中查找
题目描述 在一个二维数组中(每个一维数组的长度相同), 每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序. 请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含 ...
- Java一维数组二维数组详解API
所谓数组,是有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标 ...
- Java 一维数组 二维数组 三维数组
二维数组包含一位数组 三维数组就是在二维数组的基础上,再加一层.把二维数组看做是一维数组就可以了,按照上述理解类推. 下面是 一维 二维 三维数组例子 一维数组: int[] array1 ...
- egret之一维,二维数组
一维数组转换成二维数组下标公式: 行=下标/二维数组列数 列=下标%二维数组列数+1 ] + ); ] + ); 二维数组转一维数组: 下标=(二维数当前行-1)*列数+二维数当前列-1: let i ...
- 《Java基础知识》一维,二维数组的申明和使用
为什么要使用数组: 因为不使用数组计算多个变量的时候太繁琐,不利于数据的处理. -------- 数组也是一个变量,是存储一组相同类型的变量 声明一个变量就是在内存中划出一块合适的空间 声明一个数 ...
随机推荐
- 阿里云服务器重启出现An error occurred 如何处理
最近网站重启阿里云服务后,出现 An error occurred, An error occurred. Sorry, the page you are looking for is current ...
- 使用Log4Net将系统日志信息记录到记事本和数据库中
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hxpjava1/article/details/32714855 一.使用Log4Net将日志记录到 ...
- 学习Golang语言(6):类型--切片
学习Golang语言(1): Hello World 学习Golang语言(2): 变量 学习Golang语言(3):类型--布尔型和数值类型 学习Golang语言(4):类型--字符串 学习Gola ...
- 【学习总结】快速上手Linux玩转典型应用-第4章-准备工作
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 准备工作一 2. 准备工作二 ===================================================== ...
- vue创建项目配置脚手架vue-cli环境出错
1.at process._tickCallback (internal/process/next_tick.js:188:7) npm ERR! message: 'request to http ...
- Vue实现二级菜单的显示与隐藏
<html> <head> <title>Vue实现二级菜单的显示与隐藏</title> <script src="vue.js&quo ...
- 当页面完全加载完成后执行一个JS函数
方法1.如下程序,当页面完全加载后执行openTheIndexPage()方法 <html> <head> <meta http-equiv="Conte ...
- linux Apache 日志轮询
安装日志轮询工具 cronolog [root@Nagios-Server tools]# wgethttp://cronolog.org/download/cronolog-1.6.2.tar.gz ...
- Codeforces Round #426 (Div. 2) - C
题目链接:http://codeforces.com/contest/834/problem/C 题意:两个在玩一个游戏,对于每一轮,选定一个自然是k,初始两人的分数都为1,每一个回合赢的人在他当前分 ...
- Saving James Bond - Easy Version
题目来源: 浙江大学在慕课网上开设的<数据结构>课,陈越老师.何钦铭老师主讲,课后作业的一道题. 题目描述: 题目思路: 这道题目本质上讲就是列出图的连通集,但是这个连通集的起点是有约束的 ...