当前位置: 首页 > news >正文

前端面试题: js中对比两个对象的值是否相等? for..in 和 for...of的区别?

我去面试的时候会问这个问题, 而且发现不管是初级还是工作一段时间的小伙伴 都会说的不是很清晰
比如第一道题哈:
首先大部分人都会想起来 我们用JSON.stringify() 进行转换,查看两个是否相等

你敢说我下面的对象 值不是想等的吗。 但是你用JSON.stringify之后发现确实是不想等的。因为对象的key是无序的

const obj1 = { a: 1, b: 2}
const obj2 = {b: 2, a: 1}

‘这个时候我们就需要用递归来处理了。我其实也不是让你现场写出来 但是你要有思路哈
而且也不用考虑那些 null 或者 函数,正则这些 只要考虑深层普通对象的比较即可

比如, 判断下面的对象值是否相等

const obj1 = { a: 1, b: { c: 2}}
const obj1 = { a: 1, b: { c: 3}}

给一个chargpt写的代码哈

function compareObject(obj1, obj2) {if(obj1 === obj2) return trueif (typeof obj1 !== "object" || obj1 === null || typeof obj2 !== "object" || obj2 === null) {return false;}const keys1 = Object.keys(obj1)const keys2 = Object.keys(obj2)if(keys1.length != keys2.length) return falsefor(let item of keys1) {if(!keys2.includes(item) || !compareObject(obj1[item], obj2[item])) return false}return true
}
  1. 还有一个就是 for…in 和for of的区别。
    大多数人会说出。一个遍历对象 一个遍历数组 如果大多数人都能说出来这个 那么你和他们的区别 就不大了 如何让我选择你呢
    贴出来 下面这段话。可以作为理解和参考哈

无论是for…in还是for…of语句都是迭代一些东西。它们之间的主要区别在于它们的迭代方式。

for…in 语句以任意顺序迭代对象的可枚举属性。

for…of 语句遍历可迭代对象定义要迭代的数据。

以下示例显示了与Array一起使用时,for…of循环和for…in循环之间的区别。

Object.prototype.objCustom = function () {};
Array.prototype.arrCustom = function () {};let iterable = [3, 5, 7];
iterable.foo = "hello";for (let i in iterable) {console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}for (let i in iterable) {if (iterable.hasOwnProperty(i)) {console.log(i); // logs 0, 1, 2, "foo"}
}for (let i of iterable) {console.log(i); // logs 3, 5, 7
}

不要生搬硬套 最好加入自己的理解哈。

关注我 持续更新 前端知识。

相关文章:

前端面试题: js中对比两个对象的值是否相等? for..in 和 for...of的区别?

我去面试的时候会问这个问题, 而且发现不管是初级还是工作一段时间的小伙伴 都会说的不是很清晰 比如第一道题哈: 首先大部分人都会想起来 我们用JSON.stringify() 进行转换,查看两个是否相等 你敢说我下面的对象 值不是想等的吗。 但是你用…...

第十七章:Java连接数据库jdbc(java和myql数据库连接)

1.进入命令行:输入cmd,以管理员身份运行 windowsr 2.登录mysql 3.创建库和表 4.使用Java命令查询数据库操作 添加包 导入包的快捷键 选择第四个 找到包的位置 导入成功 创建java项目 二:连接数据库: 第一步:注册驱动…...

Unity基于种子与地块概率的开放世界2D地图生成

public class BuildingGen : MonoBehaviour {public int[] Building;//存储要生成的地块代码public int[] Probability;//存储概率public double seed;public int width 100;public int height 100;public float noiseScale 0.1f; //噪声缩放倍数private int[,] frequencyM…...

5.Vectors Transformation Rules

在上节,有个问题:向量分量的转换方式 与 新旧基底的转换方式相反 用例子来感受一下, 空间中一向量V,即该空间的一个基底:e1、e2 v e1 e2 现把基底 e1 、 e2 放大两倍。变成 基向量放大了两倍, 但对于…...

聊聊httpclient的CPool

序 本文主要研究一下httpclient的CPool ConnPool org/apache/http/pool/ConnPool.java public interface ConnPool<T, E> {/*** Attempts to lease a connection for the given route and with the given* state from the pool.** param route route of the connecti…...

B2主题优化:WordPress文章每次访问随机增加访问量

老站长都知道&#xff0c;一个新站刚开始创建&#xff0c;内容也不多的时候&#xff0c;用户进来看到文章浏览量要么是0&#xff0c;要么是 个位数&#xff0c;非常影响体验&#xff0c;就会有一种“这个网站没人气&#xff0c;看来不行”的感觉。 即使你的内容做的很好&#x…...

大模型部署手记(1)ChatGLM2+Windows GPU

1.简介&#xff1a; 组织机构&#xff1a;智谱/清华 代码仓&#xff1a;https://github.com/THUDM/ChatGLM2-6B 模型&#xff1a;THUDM/chatglm2-6b 下载&#xff1a;https://huggingface.co/THUDM/chatglm2-6b 镜像下载&#xff1a;https://aliendao.cn/models/THUDM/chat…...

Rust Rocket: 构建Restful服务项目实战

前言 这几天我的笔记系统开发工作进入了搬砖期&#xff0c;前端基于Yew&#xff0c;后端基于Rocket。关于Rocket搭建Restful服务&#xff0c;官方也有介绍&#xff0c;感觉很多细节不到位。因此我打算花2到3天的时间来整理一下&#xff0c;也算是对自己的一个交代。 对于有一…...

苹果签名有多少种类之TF签名(TestFlight签名)是什么?优势是什么?什么场合需要应用到?

&#xff08;一&#xff09;TestFlight 能够让您&#xff1a;邀请内部和外部的测试人员为应用程序提供反馈。 跟踪应用程序在测试过程中发现的 bug 和用户体验问题。 收集 Crash 报告&#xff0c;了解应用程序在真实设备上的运行状况。 要使用 TestFlight&#xff0c;您可以按照…...

如何将图片存到数据库(以mysql为例), 使用ORM Bee更加简单

如何将图片存到数据库 1. 创建数据库: 2. 生成Javabean public class ImageExam implements Serializable {private static final long serialVersionUID 1596686274309L;private Integer id;private String name; // private Blob image;private InputStream image; //将In…...

【“栈、队列”的应用】408数据结构代码

王道数据结构强化课——【“栈、队列”的应用】代码&#xff0c;持续更新 链式存储栈&#xff08;单链表实现&#xff09;&#xff0c;并基于上述定义&#xff0c;栈顶在链头&#xff0c;实现“出栈、入栈、判空、判满”四个基本操作 #include <stdio.h> #include <…...

es的nested查询

一、一层嵌套 mapping: PUT /nested_example {"mappings": {"properties": {"name": {"type": "text"},"books": {"type": "nested","properties": {"title": {"t…...

<一>Qt斗地主游戏开发:开发环境搭建--VS2019+Qt5.15.2

1. 开发环境概述 对于Qt的开发环境来说&#xff0c;主流编码IDE界面一般有两种&#xff1a;Qt Creator或VSQt。为了简单起见&#xff0c;这里的操作系统限定为windows&#xff0c;编译器也通用VS了。Qt版本的话自己选择就可以了&#xff0c;当然VS的版本也是依据Qt版本来选定的…...

python:进度条的使用(tqdm)

摘要&#xff1a;为python程序进度条&#xff0c;可以知道程序运行进度。 python中&#xff0c;常用的进度条模块是tqdm&#xff0c;将介绍tqdm的安装和使用 1、安装tqdm: pip install tqdm2、tqdm的使用&#xff1a; &#xff08;1&#xff09;在for循环中的使用&#xff1…...

Java类型转换和类型提升

目录 一、类型转换 1.1 自动类型转换&#xff08;隐式&#xff09; 1.1.1 int 与 long 之间 1.1.2 float 与 double 之间 1.1.3 int 与 byte 之间 1.2 强制类型转换&#xff08;显示&#xff09; 1.2.1 int 与 long 之间 1.2.2 float 与 double 之间 1.2.3 int 与 d…...

C# 读取 Excel xlsx 文件,显示在 DataGridView 中

编写 read_excel.cs 如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Data; using System.Linq; using System.Text; using System.Data.OleDb;namespace ReadExcel {public partial class Program{static…...

Docker02基本管理

目录 1、Docker 网络 1.1 Docker 网络实现原理 1.2 Docker 的网络模式 1.3 网络模式详解 1.4 资源控制 1.5 进行CPU压力测试 1.6 清理docker占用的磁盘空间 1.7 生产扩展 1、Docker 网络 1.1 Docker 网络实现原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docke…...

Scala第十章

Scala第十章 章节目标 1.数组 2.元组 3.列表 4.集 5.映射 6.迭代器 7.函数式编程 8.案例&#xff1a;学生成绩单 scala总目录 文档资料下载...

10.4 校招 实习 内推 面经

绿泡*泡&#xff1a; neituijunsir 交流裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 集度2024届秋招正式启动&#xff08;内推&#xff09; 校招 | 集度2024届秋招正式启动&#xff08;内推&#xff09; 2、校招 | 道通科技2024秋季校园招聘正式启动啦&#xff01; …...

从0开始深入理解并发、线程与等待通知机制(中)

一&#xff0c;深入学习 Java 的线程 线程的状态/生命周期 Java 中线程的状态分为 6 种&#xff1a; 1. 初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用 start()方法。 2. 运行(RUNNABLE)&#xff1a;Java 线程中将就绪&#xff08;ready&#xff09;和…...

Buck电路设计避坑指南:为什么你的小信号模型仿真总是不收敛?

Buck电路小信号模型仿真收敛问题实战解析 在电力电子系统设计中&#xff0c;Buck变换器的小信号模型仿真对于理解系统动态特性至关重要。然而&#xff0c;许多工程师在从理论转向实践时&#xff0c;常常遇到仿真不收敛、波形异常等问题。本文将深入剖析这些问题的根源&#xff…...

驯服中点电位:I型NPC三电平逆变器离网系统建模与动态平衡策略

1. I型NPC三电平逆变器的中点电位难题 搞电力电子的兄弟们都知道&#xff0c;中点钳位型&#xff08;NPC&#xff09;三电平逆变器有个让人又爱又恨的特点——中点电位漂移。这就像你骑自行车时突然发现车把不听使唤&#xff0c;明明直线行驶却总往一边偏。在离网系统中&#x…...

Sqitch 实战教程:如何在 PostgreSQL 中管理数据库变更

Sqitch 实战教程&#xff1a;如何在 PostgreSQL 中管理数据库变更 【免费下载链接】sqitch Sensible database change management 项目地址: https://gitcode.com/gh_mirrors/sq/sqitch Sqitch 是一款功能强大的数据库变更管理工具&#xff0c;专为 PostgreSQL 等数据库…...

保姆级教程:在Windows上用VSCode和nRF5340 Audio DK板跑通第一个蓝牙例程

从零开始&#xff1a;WindowsVSCode环境下的nRF5340 Audio DK蓝牙开发实战 在嵌入式开发领域&#xff0c;Nordic Semiconductor的nRF5340 Audio DK开发板因其强大的双核架构和出色的蓝牙音频性能而备受瞩目。但对于刚接触这款开发板的工程师来说&#xff0c;从环境配置到成功运…...

从iptables迁移到nftables:表/链/规则的对照操作指南(含性能对比)

从iptables到nftables的平滑迁移实战指南 在Linux网络安全管理领域&#xff0c;防火墙技术的演进从未停歇。对于已经熟悉iptables的中高级用户而言&#xff0c;nftables的出现既是挑战也是机遇。作为Netfilter项目的新一代防火墙框架&#xff0c;nftables不仅统一了IPv4/IPv6防…...

别再只用命令行!华为防火墙USG6000V的Web界面到底怎么玩?eNSP实战演示

华为USG6000V防火墙Web界面高效操作指南&#xff1a;从CLI到图形化的思维转换 对于习惯了命令行操作的老牌网络工程师来说&#xff0c;第一次接触华为USG6000V防火墙的Web管理界面时&#xff0c;往往会陷入一种矛盾心理——既惊叹于可视化操作的直观&#xff0c;又担心图形化界…...

MATLAB分类学习器保姆级教程:从鸢尾花数据集到模型导出全流程

MATLAB分类学习器实战指南&#xff1a;从鸢尾花分类到工业级模型部署 当你第一次面对MATLAB中那个名为"Classification Learner"的图标时&#xff0c;可能不会想到这个看似简单的交互式工具能够如此高效地完成从数据探索到生产级模型部署的全流程。不同于传统编程式机…...

SunnyUI的UITreeView控件实战:从拖拽到动态加载的完整指南

SunnyUI的UITreeView控件实战&#xff1a;从拖拽到动态加载的完整指南 在企业级应用开发中&#xff0c;树形结构数据展示几乎是每个.NET开发者都会遇到的场景。传统的WinForms TreeView控件虽然基础功能完善&#xff0c;但在现代UI体验和开发效率上逐渐显得力不从心。SunnyUI框…...

Smelpro Macaron多模无线开发板技术解析

1. Smelpro Macaron 开发板深度技术解析Smelpro Macaron 是一款面向物联网&#xff08;IoT&#xff09;边缘节点设计的高性能多模无线开发平台。其核心价值在于将 ESP32-S3 的强大处理能力与 RAK3172 多协议射频模块深度融合&#xff0c;构建出一个可同时覆盖 LoRaWAN、Sigfox、…...

订单簿处理全面解析:从技术原理到实战优化

订单簿处理全面解析&#xff1a;从技术原理到实战优化 【免费下载链接】AXOrderBook A股订单簿工具&#xff0c;使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等&#xff0c;包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com/gh_mirrors/ax/AXO…...