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整理的时候吧。

相关推荐
傻啦嘿哟2 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670792 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
李少兄3 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
Seoyoneh3 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
Tangyuewei4 小时前
Java 写 Agent:模型只是组件
java·开发语言
小玮看世界4 小时前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python
尾善爱看海5 小时前
前端算法与手写题集
前端·算法
徐小夕5 小时前
JitWord 4.0 万字分享:从协同工具到AI Word操作系统,聊聊3年产品创业史
前端·vue.js·后端
繁星蓝雨5 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
Evand J5 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪