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

今日分享:

每一步都是曼妙的风景~

_.fromPairs(pairs)

使用:

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

使用示例:

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

尝试手写:

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

js 复制代码
    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 }

源码方案:

js 复制代码
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整理的时候吧。

相关推荐
中电金信1 分钟前
从业务调优到分层缓存:DeepSeek V4 Flash的PPU实践
java·开发语言
肖永威2 分钟前
python版微电网仿真工具的前端托管选型:从http.server到FastAPI StaticFiles
前端·python·http·fastapi
风骏时光牛马2 分钟前
AI插件开发与效能提效工具箱
前端
梦影_4 分钟前
MySQL进阶教程(二)—— 储存过程与触发器(下)
开发语言·数据库·后端·sql·mysql·oracle·数据库开发
IT_陈寒5 分钟前
为什么你应该学习Java?
前端·人工智能·后端
lg_cool_10 分钟前
Python 代码打包
开发语言·python
木雷坞13 分钟前
PHP两项9.2分漏洞:Docker容器更新与版本核验教程
开发语言·docker·php
2601_9628857221 分钟前
如何用 Python 做 MACD 金叉全市场选股?
开发语言·python
FfHUCisI23 分钟前
无锁 Reactor 网络模型与 gnet / evio 架构拆解
服务器·开发语言·后端·golang
笨笨饿24 分钟前
#145 _Codex 三层故障详细排查与修复步骤
开发语言·人工智能·stm32·单片机·嵌入式硬件