我是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'。
答案 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 },
}