lodash源码分析每日一练 - 数组 - fromPairs

今日分享:

每一步都是曼妙的风景~

_.fromPairs(pairs)

使用:
这个方法返回一个由键值对pairs构成的对象。

使用示例:

_.fromPairs([['fred', 30], ['barney', 40]]);
// => { 'fred': 30, 'barney': 40 }

尝试手写:

①返回新对象 ②入参为由键值对构成的数组

    let frompairs_arr = [['fred', 30], ['barney', 40]];function my_fromPairs (pairs) {let obj = {};if((pairs instanceof Array) && pairs.length>0) {for(let i = 0; i < pairs.length; i++) {obj[pairs[i][0]] = pairs[i][1]}}return obj;}console.log(my_fromPairs(frompairs_arr));// { 'fred': 30, 'barney': 40 }

源码方案:

function fromPairs(pairs) {var index = -1,length = pairs == null ? 0 : pairs.length,result = {};while (++index < length) {var pair = pairs[index];result[pair[0]] = pair[1];}return result;
}

备注

为什么他都用 while 而不是for
语法糖只便于开发者理解而机器需要编译还原为简单的基础语言才能使用。可以说上我看的这个node_modules中的源码也是反编译后的结果而不是lodash源码。所以他的所有“源码”都是反编译后的内容。

其他

与之对应还有一个 _.toPairs(object) ,用于创建一个object对象自身可枚举属性的键值对数组。不放这里了,放后面object整理的时候吧。

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

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

相关文章

Redis数据结构(常用5+4种特殊数据类型)

1、Redis 数据类型以及使用场景分别是什么&#xff1f; Redis 提供了丰富的数据类型&#xff0c;常见的有五种数据类型&#xff1a;String&#xff08;字符串&#xff09;&#xff0c;Hash&#xff08;哈希&#xff09;&#xff0c;List&#xff08;列表&#xff09;&#xff…

119. 杨辉三角 II(Java)

给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…

通过自然语言处理增强推荐系统:协同方法

一、介绍 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术&#xff0c;包括情感分析、语言翻译和聊天机器人。 另一方面&#xff0c;推荐系统&#xff08;RecSys&#xff09;是旨在向用户…

Android笔记(二十一):Room组件实现Android应用的持久化处理

一、Room组件概述 Room是Android JetPack架构组件之一&#xff0c;是一个持久处理的库。Room提供了在SQLite数据库上提供抽象层&#xff0c;使之实现数据访问。 &#xff08;1&#xff09;实体类&#xff08;Entity&#xff09;&#xff1a;映射并封装了数据库对应的数据表中…

LeetCode——1276. 不浪费原料的汉堡制作方案

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff0c;给你两个数tomatoSlices和cheeseSlices&#xff0c;然后每制作一个巨无霸汉堡则消耗4个tomatoSlices和1和cheeseSlices&#xff0c;每制作一个小皇堡则需要消耗2个tomatoSlices和1和cheeseSlices。问给你这两个…

彻底卸载Keil4

彻底卸载Keil4 双击 然后回到该软件的文件夹位置&#xff0c;把该文件夹删除即可&#xff0c;然后清一下回收站。

Leetcode 1349. 参加考试的最大学生数(Java + 按行状压暴力 + DP)

文章目录 题目思路Java 按行状压暴力 DP&#xff1a;第 1 步&#xff1a;第 2 步&#xff1a;第 3 步&#xff1a;第 4 步&#xff1a; 复杂度Code 题目 Problem: 1349. 参加考试的最大学生数给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的&#xff08;…

【Midjourney】Midjourney提示词格式详解

目录 &#x1f347;&#x1f347;Midjourney是什么&#xff1f; &#x1f349;&#x1f349;Midjourney怎么用&#xff1f; &#x1f514;&#x1f514;Midjourney提示词格式 &#x1f341; 1.模型版本提示词&#x1f341; 参数 参数详解 应用示例 &#x1f343; 2.风格…

基于双闭环PI的SMO无速度控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于双闭环PI的SMO无速度控制系统simulink建模与仿真&#xff0c;基于双闭环PI的SMO无速度控制系统主要由两个闭环组成&#xff1a;一个是电流环&#xff0c;另一个是速度环。…

AssertionError: The environment must specify an action space. 报错 引发的惨案

起因是&#xff1a;从github上下载了一个代码&#xff0c;运行出错。 整体流程&#xff1a; 1. AssertionError: The environment must specify an action space. 报错&#xff0c;解决方案是 降级gym到 gym0.18.0 2.为了降级gym gym0.18.0 报错&#xff0c;发现需要降级 setup…

Linux scp命令教程:如何安全地在Linux机器之间复制文件(附案例详解和注意事项)

Linux scp命令介绍 scp命令是Secure Copy的缩写&#xff0c;它是一个基于SSH的命令行工具&#xff0c;用于在两个位置之间安全地复制文件和目录。使用scp&#xff0c;你可以从本地系统复制文件或目录到远程系统&#xff0c;从远程系统复制文件或目录到本地系统&#xff0c;或者…

k8s实战之ELK日志管理

首先查看总体流程 首先创建namespace apiVersion: v1 kind: Namespace metadata:name: kube-logging 一、首先创建es.yaml --- apiVersion: v1 #kubernetes API版本,采用最新版本v1 kind: Service #资源类型定义为Service metadata: name: elasticsearch-logging # …

vue3 全局配置Axios实例

目录 前言 配置Axios实例 页面使用 总结 前言 Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境。它提供了一种简单、一致的 API 来处理HTTP请求&#xff0c;支持请求和响应的拦截、转换、取消请求等功能。关于它的作用&#xff1a; 发起 HTTP …

音视频技术开发周刊 | 325

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 AI读心术震撼登顶会&#xff01;模型翻译脑电波&#xff0c;人类思想被投屏&#xff5c;NeurIPS 2023 在最近举办的NeurIPS大会上&#xff0c;研究人员展示了当代AI更震撼…

CSS Grid 网格布局简要说明

grid网格布局&#xff0c;是一个二维系统&#xff0c;可以像表格一样将页面容器分割成一块一块的区域&#xff0c;定义子元素的排布和位置。 简单使用&#xff1a; 对父元素设置dispay&#xff1a;grid;grid-template-colums和grid-template-rows来设置几行几列 1. grid-temp…

CMakeLists.txt

源码结构 生成可执行程序 # CMake最小版本号 cmake_minimum_required(VERSION 3.15.0)#增加-stdc11 set(CMAKE_CXX_STANDARD 11)#设置工程名称 project(calculate)#[[ #方法一&#xff1a;添加源码文件 #aux_source_directory(< dir > < variable >) #dir&#xf…

c# 比较对象是否相同

在C#中&#xff0c;比较两个对象是否相同可以有以下几种方法&#xff1a; ReferenceEquals(object o1, object o2)&#xff1a; 这是一个静态方法&#xff0c;用于比较两个对象的引用是否指向堆中的同一块内存。如果两个对象是同一个实例或者都是 null&#xff0c;那么返回 tru…

python异常之assert语句

1 python异常之assert语句 python的assert语句&#xff0c;是一个断言语句。 用于断言某个表达式的值是否符合预期&#xff0c;不符合则停止运行&#xff0c;并且触发AssertionError异常。 1.1 基本用法 用法 assert test_cond [,err_msg]描述 test_cond&#xff1a;要测…

FreeSWITCH continue_on_fail

先看一段简单的dialplan&#xff1a; <action application"set" data"continue_on_failtrue"/> <action application"bridge" data"user/1001"/> <action application"log" data"ERR run here"/&g…

【JDK新特性】JDK和Springboot各版本新特性介绍

目录 参考资料 以下是一些较新版本的JDK的主要新特性介绍&#xff1a; JDK 8&#xff1a; Lambda 表达式&#xff1a;引入了函数式编程的概念&#xff0c;使得代码更简洁、可读性更强。Stream API&#xff1a;提供了一种高效处理集合数据的方式&#xff0c;支持并行处理。默认…