【前端】JavaScript 方法速查大全-对象(二)

🔥 前言

在现代Web开发中,JavaScript已经成为不可或缺的编程语言。无论是前端开发还是后端服务,JavaScript都扮演着重要角色。为了帮助开发者更高效地使用JavaScript,本文将为您提供一个全面、系统的JavaScript方法参考,涵盖数组操作、对象处理、DOM与BOM接口、时间处理、函数应用、正则表达式等多个方面。无论您是初学者还是资深开发者,这里都有您需要的实用技巧和代码示例!💻✨

JavaScript 方法速查

👫 对象处理

1. 对象合并

在JavaScript中,合并对象是一个常见的需求。以下是两种常用的方法:

使用ES6的扩展运算符
// ES6 方法
let obj1 = { a: 1, b: { b1: 2 } };
let obj2 = { c: 3, d: 4 };
let mergedObj = { ...obj1, ...obj2 };
console.log(mergedObj); // {a: 1, b: {…}, c: 3, d: 4}
使用 Object.assign()
// Object.assign()
let o1 = { a: 1 };
let o2 = { b: 2 };
let obj = Object.assign(o1, o2);
console.log(obj); // { a: 1, b: 2 }
console.log(o1); // { a: 1, b: 2 }
console.log(o2); // { b: 2 }// 备注:Object.assign() 进行的是浅拷贝

2. 浅拷贝与深拷贝

在处理对象时,了解浅拷贝与深拷贝的区别至关重要。

深拷贝(基础版)
function deepClone(origin, target = {}) {for (let key in origin) {if (origin.hasOwnProperty(key)) {let isType = Object.prototype.toString.call(origin[key]);if (isType === '[object Object]') {target[key] = {};deepClone(origin[key], target[key]);} else if (isType === '[object Array]') {target[key] = [];deepClone(origin[key], target[key]);} else {target[key] = origin[key];}}}return target;
}let zhu = {name: '千鑫',technology: ['css', 'html', 'js'],girlfriend: {name: 'lyt'}
};let zhuClone = deepClone(zhu);
console.log(zhuClone);

替代方法JSON.parse(JSON.stringify(obj))(不支持函数、undefinedsymbol等类型)

浅拷贝
function clone(origin, target = {}) {for (const key in origin) {if (origin.hasOwnProperty(key)) {target[key] = origin[key];}}return target;
}

3. 拓展:首层浅拷贝

function shallowClone(source) {const targetObj = Array.isArray(source) ? [] : {};for (let key in source) {if (source.hasOwnProperty(key)) {targetObj[key] = source[key];}}return targetObj;
}const originObj = {a: 'a',b: 'b',c: [1, 2, 3],d: { dd: 'dd' }
};const cloneObj = shallowClone(originObj);
console.log(cloneObj === originObj); // false
cloneObj.a = 'aa';
cloneObj.c = [1, 1, 1];
cloneObj.d.dd = 'surprise';console.log(cloneObj); // {a:'aa', b:'b', c:[1,1,1], d:{dd:'surprise'}}
console.log(originObj); // {a:'a', b:'b', c:[1,2,3], d:{dd:'dd'}}

4. 判断对象是否为空对象

let obj = {};
if (JSON.stringify(obj) === '{}') {console.log('空对象');
}

5. 判断对象中属性的个数

let obj = { name: '千鑫', age: 21 };// ES6
console.log(Object.keys(obj).length); // 2// ES5
function attributeCount(obj) {let count = 0;for(let key in obj) {if(obj.hasOwnProperty(key)) {count++;}}return count;
}
console.log(attributeCount(obj)); // 2

6. JS 对象转 URL 查询字符串

const objectToQueryString = (obj) => Object.keys(obj).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`).join('&');console.log(objectToQueryString({name: 'Jhon', age: 18, address: 'beijing'}));
// "name=Jhon&age=18&address=beijing"

7. 对象遍历

let objs = {1: { name: '千鑫' },2: { name: '鑫总' }
};Object.keys(objs).forEach(key => {console.log(key, objs[key]);
});
// 1 {name: '千鑫'} 
// 2 {name: '鑫总'}

🌲 更多文章

  • 【VScode】中文版ChatGPT编程工具-CodeMoss!教程+示例+快捷键
  • 【VScode】VSCode中的智能编程利器,全面揭秘ChatMoss & ChatGPT中文版
  • 请添加图片描述

📝 结尾

以上内容涵盖了常用的JavaScript方法与技巧,希望对大家在日常开发中有所帮助。掌握这些方法将使您的开发工作更加高效和顺畅。如果您有更好的方法或建议,欢迎在评论区交流!让我们一起提升JavaScript的使用技巧,共同进步!💪😊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/467085.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

右旋圆极化散射后的stocks矢量 与T3矩阵的关系

T3矩阵如下 斯托克斯与T3的关系如下。 斯托克斯与T3均没有平均处理,即斯托克斯是完全极化波的(一种琼斯矢量得到),T3是由一个散射矩阵得到,只有一个特征值。

电子电气架构 -- 智能汽车电子电气架构开发关键技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…

Windows下mysql数据库备份策略

Windows下mysql的增量备份和全量备份,并利用schtasks设置定时任务执行bat脚本。 一、备份要求 序号 备份类型 备份频次 备份时间 1 增量备份 每周一-每周六各一次 18:00:00 2 全量备份 每周日一次 18:00:00 二、备份方法 2.1增量备份 2.1.1准备工作…

使用CentOS宝塔面板docker搭建EasyTier内网穿透服务

0. 前言 EasyTier是一个简单、安全、去中心化的内网穿透 VPN 组网方案,部署方便,支持 MacOS/Linux/Windows/FreeBSD/Android平台,而且作者搭建了一个公共服务器,不想折腾自建服务,可以使用默认的公共服务器地址 tcp:/…

Moment.js、Day.js、Miment,日期时间库怎么选?

一直以来,处理时间和日期的JavaScript库,选用的都是Momment.js。它的API清晰简单,使用方便灵巧,功能还特别齐全。 大师兄是Moment.js的重度使用者。凡是遇到时间和日期的操作,就把Moment.js引用上。 直到有天我发现加…

AOSP去特征|AOSP导入android-studio|AOSP导入clion

什么是AOSP 开源性:AOSP的源代码公开,任何人都可以获取和修改,适合想要开发或自定义安卓系统的开发者。 灵活性:AOSP提供了基本的安卓功能,制造商可以基于AOSP开发出自己的定制系统(如三星的One UI、小米的…

JavaScript 网页设计详解教程

JavaScript 网页设计详解教程 引言 JavaScript 是一种广泛使用的编程语言,主要用于网页开发。它使得网页具有动态交互性,能够响应用户的操作。随着前端开发的不断发展,JavaScript 已成为现代网页设计中不可或缺的一部分。本文将详细介绍 Ja…

Android关机流程知多少?

在 Android 中,关机流程涉及系统各个组件的协同工作,确保设备在断电之前能够安全地关闭所有活动并保存数据。以下是 Android 系统中关机流程的详细介绍: 1. 用户触发关机请求 关机流程由用户的操作触发,通常有以下几种方式&#…

【Mac】PD报错:无法为“Windows” 完成操作,虚拟机ID无效的解决办法

Parallels Desktop是Mac上一款非常常用的虚拟机软件,但是在使用过程中,可能会遇到一些问题不知道如何处理。比如有时会遇到PD报错:无法为“Windows 11”完成操作,虚拟机ID无效。 错误原因 电脑上安装过虚拟机,虚拟机被…

51c大模型~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/11599989 #关于大模型「越狱」的多种方式 此项目是由伊利诺伊大学香槟分校(UIUC)的汪浩瀚教授主导,汇集了多名intern的共同努力而成。长久以来,这个跨学科的团队一直在前沿科…

一:时序数据库-Influx应用

目录 0、版本号 1、登录页面 2、账号基本信息 3、数据库案例 4、可视化 5、java案例 0、版本号 InfluxDB v2.4.0 1、登录页面 http://127.0.0.1:8086/signin 账号:自己账号 密码:自己密码 2、账号基本信息 查看用户id和组织id!&…

Uefi Application小游戏开发之贪吃蛇

这段代码是一个 UEFI 应用程序&#xff0c;它实现了一个简单的贪吃蛇游戏。 #include <Uefi.h> #include <Library/UefiLib.h> #include <Library/ShellCEntryLib.h> #include <Library/UefiBootServicesTableLib.h> #include <Library/UefiRuntim…

C++设计模式结构型模式———组合模式

文章目录 一、引言二、组合模式三、总结 一、引言 组合模式是一种结构型设计模式&#xff0c; 可以使用它将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。代码实现中涉及了递归调用。组合模式与传统上的“类与类之间的组合关系”没有关联&#xff0c;不…

『大模型笔记』IBM技术团队:什么是智能体型RAG!

『大模型笔记』IBM技术团队:什么是智能体型RAG! 文章目录 一. 『大模型笔记』IBM技术团队:什么是智能体型RAG!二. 参考文献一. 『大模型笔记』IBM技术团队:什么是智能体型RAG! ✅检索增强生成(RAG)是一种结合检索和生成能力的技术,通过从向量数据库检索相关信息作为上…

快速傅里叶变换(FFT)基础(附python实现)

对于非专业人士&#xff0c;傅里叶变换一直是一个神秘的武器&#xff0c;它可以分析出不同频域的信息&#xff0c;从时域转换到频域&#xff0c;揭示了信号的频率成分&#xff0c;对于数字信号处理&#xff08;DSP&#xff09;、图像、语音等数据来说&#xff0c;傅里叶变换是最…

丹摩征文活动|新手入门指南

在AI大模型发展的今天&#xff0c;高性能计算平台已经成为研究和应用领域中不可或缺的工具。丹摩智算平台专注于为用户提供强大的算力支持和便捷的操作流程&#xff0c;帮助研究者和开发者更高效地训练和优化AI模型。本教程将深入介绍丹摩智算平台的核心功能及具体操作步骤&…

Java项目实战II基于Spring Boot的便利店信息管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的…

【VScode】VScode内的ChatGPT插件——CodeMoss全解析与实用教程

在当今快速发展的编程世界中&#xff0c;开发者们面临着越来越多的挑战。如何提高编程效率&#xff0c;如何快速获取解决方案&#xff0c;成为了每位开发者心中的疑问。今天&#xff0c;我们将深入探讨一款颠覆传统编程体验的插件——CodeMoss&#xff0c;它将ChatGPT的强大功能…

数据冒险-dadd,sub和and

从图中的流水线执行情况来看&#xff0c;我们可以分析指令之间的依赖关系。图中每条指令对应的执行阶段标注为 IF (取指令)&#xff0c;ID (指令译码)&#xff0c;EX (执行)&#xff0c;Mem (访存)&#xff0c;和 WB (写回)。以下是对每条指令依赖情况的分析&#xff1a; 第一条…

如何修改WordPress经典编辑器的默认高度?

boke112百科有一个使用WordPress搭建的小网站&#xff0c;文章内容就是几个字不到一行&#xff0c;但是每次使用经典编辑器编辑文章时&#xff0c;都觉得编辑器默认高度太高了&#xff0c;影响了我添加文章摘要和其他属性&#xff0c;有没有办法修改WordPress经典编辑器的默认高…