看不懂这个js代码

Posted

技术标签:

【中文标题】看不懂这个js代码【英文标题】:Cannot understand this Js code 【发布时间】:2017-10-13 20:03:40 【问题描述】:

我是 NodeJs 新手,有 Java 和 Angular Typescript 方面的经验。

有人写了这段代码,我看不懂,你能帮帮我吗?我尝试在控制台上打印输出,但我无法掌握语法。

function toMap(arr, key) 
  var map = ;
  console.log("Key is"+ key);
  if (arr) 
    for (var i=0; i<arr.length; i++) 
      map[arr[i][key]] = arr[i];
    
  

  return map;

arr 是来自数据库的对象数组,id 是键,此处传递的值是 'id'。

【问题讨论】:

arr 看起来像什么......返回的对象是什么样子 - 看到这两个应该清楚函数的作用 - 如果不是,我不确定有什么解释可以帮助 它是一个来自数据库的键值对对象 那么,太复杂了,无法添加到问题中? 如果你检查我希望添加它 没关系 - 人们已经回答了 【参考方案1】:

看起来它需要像这样的对象的集合

[ omg:'ahh' , omg:'ohnoes'] 

把它变成这样的东西:


  'ahh': omg:'ahh',
  'ohnoes': omg: 'ohnoes'

使用电话toMap([ omg:'ahh' , omg:'ohnoes'], 'omg')。看起来很像lodash中的keyBy函数。

【讨论】:

【参考方案2】:

这个函数只是简单的将数组转换成需要的键值对格式,仅此而已,如果你想正确理解nodeJs,请确保你知道什么是回调?以及它如何在 nodeJS 中使用? "arr" 具有多个值,for 循环是使用公共键 map[arr[i][key]] = arr[i]; 使单个对象中的所有值,map 是将从该函数返回的最终数组。 你通过发送两个参数来调用这个函数toMap(arr, key)

【讨论】:

【参考方案3】:

这很简单。 arr 参数是一个对象数组(相同,可能是某种记录),key 是一个字符串,表示这些对象中存在的属性。 函数只是返回一个新的关联对象,其中每个对象都可以通过key 属性中的值访问。

例子:

people = [  name: 'John', age: 20 , 
            name: 'Alice', age: 32 , 
            name: 'Bartek', age: 24  
         ]

map = toMap(people, 'name')

现在地图等于:


    'John':  name: 'John', age: 20 ,
    'Alice':  name: 'Alice', age: 32 ,
    'Bartek':  name: 'Bartek', age: 24 ,

【讨论】:

是的,这是有什么简单的方法我无法掌握语法

以上是关于看不懂这个js代码的主要内容,如果未能解决你的问题,请参考以下文章

用原生js封装轮播图

一觉醒来,竟发现自己看不懂 JS 了?

js原生跨域--用script标签实现

看不懂这个返回类型?

js拖拽问题,求大神详解

c++ map、multimap基本用法是什么,下面这个代码看不懂