首页 > 其他分享 >JS 扩展运算符(...)

JS 扩展运算符(...)

时间:2024-08-31 12:36:10浏览次数:11  
标签:... 对象 value JS 运算符 OrderDetail goodsResponse 属性

平时在对接服务端的数据时,后端返回的数据格式总不尽相同,因此前端总是需要自己再把数据加工处理成自己想要的格式

最近在表格中渲染数据数据时就遇到了部分渲染不出来的情况,后来发现是对层数据,不能直接渲染的原因。

举个例子,一个数组或一个对象里面包含了另一个对象,那在第一层的属性都可以被渲染,第二层的对象就出不来了,这时就可以用扩展运算符把里的东西都展开,再组成同一个层级的对象

const OrderDetail=ref({
  name: "订单一号",
  price: 100,
  count: 2,
  goodsResponse:{
    name: "商品一号",
    price: 100,
    count: 2
  }
})
const getOrderDetail = ()=>{
  console.log(OrderDetail.value);
  OrderDetail.value = {...OrderDetail.value,...OrderDetail.value.goodsResponse} 
  console.log(OrderDetail.value);
}

 代码解释:

  1. {...OrderDetail.value}:这部分代码创建了 OrderDetail.value 对象的一个浅拷贝。使用展开运算符将 OrderDetail.value 对象中的所有可枚举属性复制到一个新对象中。

  2. {...OrderDetail.value.goodsResponse}:这部分代码同样创建了 OrderDetail.value.goodsResponse 对象的一个浅拷贝,并将这个对象中的所有可枚举属性复制到一个新对象中。

  3. OrderDetail.value = {...OrderDetail.value, ...OrderDetail.value.goodsResponse}:这行代码将上述两个对象合并为一个新对象,并将这个新对象赋值给 OrderDetail.value。合并的规则是,如果两个对象中有相同的属性,那么后面的对象(在这个例子中是 OrderDetail.value.goodsResponse)的属性值会覆盖前面对象(OrderDetail.value)的同名属性值。(如果两个对象有相同的属性,注意保留想要的属性值)

总结来说,这段代码的作用是将 OrderDetail.value 对象和 OrderDetail.value.goodsResponse 对象合并,如果有重复的属性,后者会覆盖前者的值,然后将合并后的对象重新赋值给 OrderDetail.value

数组处理:

标签:...,对象,value,JS,运算符,OrderDetail,goodsResponse,属性
From: https://www.cnblogs.com/xz1005xfx/p/18390126

相关文章

  • 【精品毕设推荐】基于SSM+jsp的图书管理系统设计与实现
    点击下载原文及代码,可辅助在本地配置运行摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本图书管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软......
  • vue3 jsx响应式渲染变量
    1、JSX渲染变量vue在html代码区渲染变量使用双大括号{{}},jsx在渲染是单大括号{}另外,这里随便记一下一个简单有点绕的业务逻辑2、多个变量影响判断三元表达式根据上图,想要的效果分别是:订单状态是否支付,显示对应状态已支付的订单是否申请开发票,显示对应状态;且已申请的无法......
  • 04.循环语句 & 逻辑运算符
    4.循环语句and逻辑运算符4.1for循环for循环的基本结构为:两个分号是必不可少的,用while表示for可以写为:如果在for循环中,第一部分被省略,C++会假定判断条件始终为真,循环一直进行。程序经常在循环体中显示控制变量值或在计算中使用它,但这种使用不是必需的。控制变量通常用于......
  • 03.控制语句、运算符及bool类型
    3.控制语句、运算符及bool类型3.1算法任何计算问题都可以通过按特定顺序执行一系列操作来解决。用以下方法解决问题的程序:1.要执行的操作2.这些操作的执行顺序就叫做算法。指定程序中语句(操作)执行的顺序称为程序控制。3.3伪代码(Pseudocode)使用伪代码,不必担心C++中的......
  • js WritableStream
    index.html:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</......
  • IO进程练习:请在linux 利用c语言编程实现两个线程按照顺序依次输出”ABABABAB......“
    例如:a线程输出”A”之后b线程输出”B”,然后a线程输出“A”,再b线程输出”B”,之后往复循环。【1】使用信号量实现代码展示:#include<stdio.h>#include<pthread.h>#include<string.h>#include<semaphore.h>#include<unistd.h>//定义两个全局信号量,实现同步机制se......
  • 基于nodejs+vue潮流数码社区系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着科技的飞速发展,数码产品已成为现代人日常生活中不可或缺的一部分,从智能手机、笔记本电脑到各类智能穿戴设备与智能家居产品,其更新换代速度之快,使得消费......
  • 基于nodejs+vue车辆充电桩[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着全球能源结构的转型和电动汽车产业的迅猛发展,车辆充电桩作为电动汽车普及的关键基础设施,其建设与管理的重要性日益凸显。近年来,电动汽车市场快速增长,但......
  • 基于nodejs+vue车辆道路管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着城市化进程的加速和汽车保有量的持续增长,道路交通管理面临着前所未有的挑战。传统的车辆与道路管理方式已难以有效应对日益复杂的交通状况,如交通拥堵、......
  • 基于nodejs+vue车辆管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着城市化进程的加速和交通网络的日益完善,车辆管理已成为现代社会中不可或缺的一环。传统的人工车辆管理模式不仅效率低下,而且容易出错,难以满足大规模车辆......