JavaScript/使用映射创建对象

JavaScript/使用映射创建对象,javascript,Javascript,我在JS中有下一个定义: var multipartMap = { Parts: [] }; 所以我可以做下一步: multipartMap.Parts[partParams.PartNumber - 1] = { ETag: mdata.ETag, PartNumber: Number(partParams.PartNumber) }; multipartMap[id].Parts[partParams.PartNumber

我在JS中有下一个定义:

var multipartMap = {
    Parts: []
};
所以我可以做下一步:

    multipartMap.Parts[partParams.PartNumber - 1] = {
        ETag: mdata.ETag,
        PartNumber: Number(partParams.PartNumber)
    };
    multipartMap[id].Parts[partParams.PartNumber - 1] = {
        ETag: mdata.ETag,
        PartNumber: Number(partParams.PartNumber)
    };
但我想有能力做下一件事:

    multipartMap.Parts[partParams.PartNumber - 1] = {
        ETag: mdata.ETag,
        PartNumber: Number(partParams.PartNumber)
    };
    multipartMap[id].Parts[partParams.PartNumber - 1] = {
        ETag: mdata.ETag,
        PartNumber: Number(partParams.PartNumber)
    };
所以multipartMap也将是对象的映射

编辑:

为了澄清这一点,我希望multipartMap[0]中包含部件数组,multipartMap[1]中也包含部件数组,以此类推。。该数字将是用户提供的动态参数

我该怎么做呢?

看起来像是你想要的

var multipartMap = {
    SomeId: {
      Parts: []
    },
    SomeOtherId: {
      Parts: []
    }.
    etc.
};
现在,您在multipartMap[id]中提到的id。部件可以是SomeId或SomeOtherId

编辑添加:您提到ID将是动态的。那很好,也一样

你先从

var multipartMap = {};
然后,当您获得一个id和一个部件数组时,您可以执行以下操作

multipartMap[id] = {Parts: []};

您将得到与上面相同的结构。

我仍然做不到:multipartMap[id].Parts[partParams.PartNumber-1]。Is表示multipartMap[id]未定义。id是我从用户那里获得的外部参数。@或首先提交multipartMap[id]=[]或multipartMap[id]={}。但我不知道id。它是动态的,取决于用户。编辑以响应。一旦有了空对象,就可以添加所需的任何id/值对。