如何在对象内部设置对象

How to set an object inside an object?

本文关键字:对象 内部 设置      更新时间:2023-09-26

我有两个对象映射;

var one = { '1': { id: 1, pid: 1, name: 'John'},
        '3': { id: 35, pid: 3, name: 'Josh'},
        '5': { id: 34, pid: 5, name: 'Joe'} }
var two = {1:1, 34:1, 35:1}
Object.keys(one).forEach(function(item){
    two[one[item].id]= {pid : one[item]};
});

我想要的结果是

{1:  { '1': { id: 1, pid: 1, name: 'John'}, 34: {'3': { id: 34, pid: 3, name: 'Josh'}}, 35:{'5': { id: 35, pid: 5, name: 'Joe'}}}

但是我得到

 {1:  { pid: { id: 1, pid: 1, name: 'John'}, 34: {pid: { id: 34, pid: 3, name: 'Josh'}}, pid:{'5': { id: 35, pid: 5, name: 'Joe'}}}

但是我没有得到动态pid,只有堆栈pid。我知道上面的循环设置它在静态id,想解决它得到动态pid。

要获得良好的结果,只需将"pid"设置为键,就像您对"id"所做的那样:

var one = { '1': { id: 1, pid: 1, name: 'John'},
        '3': { id: 35, pid: 3, name: 'Josh'},
        '5': { id: 34, pid: 5, name: 'Joe'} }
var two = {}
Object.keys(one).forEach(function(item){
    var current = one[item]
    // We initialize empty object
    two[current.id]= {}
     // We set the object at key .pid to what is wanted
    two[current.id][current.pid] = current
})
console.log(two)

Result (in JSON):

{"1":{"1":{"id":1,"pid":1,"name":"John"}},"34":{"5":{"id":34,"pid":5,"name":"Joe"}},"35":{"3":{"id":35,"pid":3,"name":"Josh"}}} 

您说您想要的不是一个有效的对象。我猜你想

var one = {
    1: { id: 1, pid: 1, name: 'John'},
    3: { id: 35, pid: 3, name: 'Josh'},
    5: { id: 34, pid: 5, name: 'Joe'}
}, two = {};
Object.keys(one).forEach(function(item){
    two[one[item].id]= one[item];
});
var one = { 
    '1': { id: 1, pid: 1, name: 'John'},
    '3': { id: 35, pid: 3, name: 'Josh'},
    '5': { id: 34, pid: 5, name: 'Joe'} 
}
var two = {1:1, 34:1, 35:1}
Object.keys(one).forEach(function(item){
    var obj = {};
    obj[one[item].pid] = one[item];
    two[one[item].id]= obj;
});
console.log (two);

这应该对你有用。

var one = { '1': { id: 1, pid: 1, name: 'John'},
    '3': { id: 35, pid: 3, name: 'Josh'},
    '5': { id: 34, pid: 5, name: 'Joe'} };
var two = {1:1, 34:1, 35:1};
for (key in one){
   var item = one[key];
   two[item.id] = {};
   two[item.id][item.pid] = item;
}