无法理解这个Js代码

时间:2017-05-15 06:20:33

标签: javascript node.js

我是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'。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

看起来它需要一组像

这样的对象
[{ omg:'ahh' }, {omg:'ohnoes'}] 

并把它变成这样的东西:

{
  'ahh': {omg:'ahh'},
  'ohnoes': {omg: 'ohnoes'}
}

使用电话toMap([{ omg:'ahh' }, {omg:'ohnoes'}], 'omg')。它似乎与lodash中的keyBy函数非常相似。

答案 2 :(得分:0)

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

示例:

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

map = toMap(people, 'name')

现在map等于:

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