源数据如图,可以看到数据都存在里面,但是想取出来干净的数据

  console.log('a', selection)

在这里插入图片描述

一、全部数据获取

  const b = JSON.parse(JSON.stringify(selection))
  console.log('b', b)

在这里插入图片描述

1.具体讲解

  • JSON.parse(JSON.stringify(selection)) 是一种常见的 JavaScript代码技巧,通常用于深拷贝(deep copy)对象。
  • JSON.stringify(selection):
    这个方法将 JavaScript 对象(selection)转换成一个 JSON 字符串。换句话说,它把对象转换成一种标准的字符串表示形式。例如:
const obj = { name: 'Alice', age: 25 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"name":"Alice","age":25}'

注意,JSON.stringify 只会序列化对象中的可枚举属性,且对函数、undefined、symbol、RegExp、Date等一些类型的值有特殊处理。例如,undefined 在对象中会被省略,Date 对象会被转成 ISO 格式的字符串。

  • JSON.parse():
    这个方法将一个 JSON 字符串转换回一个 JavaScript 对象。例如:
const jsonString = '{"name":"Alice","age":25}';
const obj = JSON.parse(jsonString);
console.log(obj); // { name: 'Alice', age: 25 }
  • 为什么 JSON.parse(JSON.stringify(selection)) 可以实现深拷贝?
    通过先将对象转换为 JSON 字符串,然后再解析该字符串生成一个新的对象,我们得到了原始对象的一个完全独立的副本。
    这种方法的关键在于:JSON 字符串是一个纯文本格式,不会包含引用类型信息。所以,当 JSON.parse() 解析字符串时,它会创建一个全新的对象(而不是引用原始对象)。
    这意味着深层嵌套的对象或数组也会被复制,而不会共享同一个引用。例如:
let selection = { name: 'Alice', details: { age: 25, city: 'New York' } };

// 使用 JSON.parse(JSON.stringify()) 进行深拷贝
let copy = JSON.parse(JSON.stringify(selection));

// 修改拷贝中的值
copy.details.age = 30;

console.log(selection.details.age); // 25 (原始对象不受影响)
console.log(copy.details.age); // 30 (拷贝对象的值被修改)

二、单个数据获取

 console.log('c', selection[0].materialUnit)

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐