这是我的情况:
我必须实现一个函数“mapById”,当给定一个对象数组时,它返回一个对象,其中键是输入对象的 id,值是相应的输入对象。
var input = [{id: 102, name: "Alice"},
{id: 205, name: "Bob", title: "Dr."},
{id: 592, name: "Claire", age: 32}];
console.log(mapById(input));
Run Code Online (Sandbox Code Playgroud)
应该给出以下结果:
102: {id: 102, name: "Alice"},
205: {id: 205, name: "Bob", title: "Dr."},
592: {id: 592, name: "Claire", age: 32}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的功能:
function mapById(list) {
var obj = {};
var objectKey = '';
list.forEach(function(item) {
objectKey = (Object.values(item)[0]);
var obj = {[objectKey]: item};
});
return obj;
}
Run Code Online (Sandbox Code Playgroud)
我可以为原始数组中的每个对象获取一个新的键/值对,但我无法弄清楚如何将每个新的键/值对添加到新对象中。
ObjectKey: 102
item: { id: 102, name: 'Alice' }
obj: …Run Code Online (Sandbox Code Playgroud) 我该如何解决?
问题是这样的:
实现一个函数“mapById”,当给定一个对象数组时,该函数返回一个对象,其中键是输入对象的 id,值是相应的输入对象。
例如:
mapById([{id: 102, name: "Alice"},
{id: 205, name: "Bob", title: "Dr."},
{id: 592, name: "Claire", age: 32}]);
Run Code Online (Sandbox Code Playgroud)
返回:
{
102: {id: 102, name: "Alice"},
205: {id: 205, name: "Bob", title: "Dr."},
592: {id: 592, name: "Claire", age: 32}
}
Run Code Online (Sandbox Code Playgroud)
var key = 回调(item); ^ TypeError:回调不是函数
function mapById(list, callback) {
var obj = {};
list.forEach(function(item) {
var key = callback(item);
if (obj[key]) {
obj[key] = obj[key].concat(item);
} else {
obj[key] = [item];
}
});
return obj;
} …Run Code Online (Sandbox Code Playgroud)