看不懂这个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代码的主要内容,如果未能解决你的问题,请参考以下文章