【问题标题】:Cannot understand this Js code看不懂这个js代码
【发布时间】: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 看起来像什么......返回的对象是什么样子 - 看到这两个应该清楚函数的作用 - 如果不是,我不确定有什么解释可以帮助
  • 它是一个来自数据库的键值对对象
  • 那么,太复杂了,无法添加到问题中?
  • 如果你检查我希望添加它
  • 没关系 - 人们已经回答了

标签: javascript node.js


【解决方案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 },
      }
      

      【讨论】:

      • 是的,这是有什么简单的方法我无法掌握语法
      猜你喜欢
      • 2023-03-28
      • 2017-05-16
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多