小编coc*_*att的帖子

JavaScript——如何遍历对象数组以创建一个新对象,其键是原始对象的初始键/值对的值

这是我的情况:

我必须实现一个函数“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)

javascript arrays object

5
推荐指数
1
解决办法
968
查看次数

Javascript TypeError:回调不是函数 - 我该如何解决这个问题?

我该如何解决?

问题是这样的:

实现一个函数“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)

javascript object callback

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

javascript ×2

object ×2

arrays ×1

callback ×1