如何从另一个对象

时间:2017-06-23 05:59:13

标签: javascript

我正在弄清楚如何拍摄这样形状的物体:

{
    "stores": {
        store: [
            {
                location: {
                     city: "Austin,
                     state: "TX"
                }
            }
        ],
        [ ... 100 more stores ]
    }
}

我需要做的是创建一个新对象,其中store将位于顶层,以便我可以根据需要塑造,而不是塑造stores

{
    "store": [
        {
            city: "Austin",
            state: "TX"

        },
        {
            city: "San Francisco",
            state: "CA"
        },
        { ... 100 more }
    ]
}

从第一个对象创建一个新对象并且能够获得第二级并使其成为第一级的最佳方法是什么?我是否必须创建一个新对象,或者我可以操纵第一个?

如何在不需要维护的情况下使用最少量的代码来完成这项工作?

为什么要用这种方法塑造新物体?

感谢您在理解处理此任务的过程中提供的任何帮助

我的最终输出需要与此类似:

{
    company: "ABC",
    companyId: 1234,
    nasdaq: ABCND,
    store: [], // this is where I will have all the objects stores in array
    employees: 1000000
}

我的希望是,这样可以更清晰地说明我在尝试第一个并将其塑造成第二个时所做的尝试。

注意

  

在评论中进行讨论后,由于问题不清晰以及如何引起混淆,应该关闭这个问题。我希望它不是封闭的,而是用作如何不在SO上提问的参考。

3 个答案:

答案 0 :(得分:0)

object.stores将为您提供第二级对象。

您不需要"创建新对象"或"创建不同的对象结构",或者"操纵对象",或者"使第二级成为第一级&#34 ;;你只需要引用你想要的子对象,如

{
    company: "ABC",
    companyId: 1234,
    nasdaq: ABCND,
    store: object.stores, // this is where I will have all the objects stores in array
    employees: 1000000
}

答案 1 :(得分:0)

假设你有一个类似

的结构
{
    stores: {
        store1: [{ location: { city: "Austin", state: "TX" } }],
        store2: [{ location: { /* ... */ } }],
    }
}

你可以用数组连接所有内部对象。

var object = { stores: { store1: [{ location: { city: "Austin", state: "TX" } }], store2: [{ location: { city: "Austin", state: "TX" } }, { location: { city: "San Francisco", state: "CA" } }] } },
    flat = {
        stores: Object.keys(object.stores).reduce(function (r, k) {
            return r.concat(object.stores[k]);
        }, [])
    };

console.log(flat);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:0)

let allStores = storesObject.stores.store;

使用上面的代码,您将创建对已存在的store个对象数组的新引用。