【问题标题】:array of strings into array of objects with one attribute each?将字符串数组转换为具有一个属性的对象数组?
【发布时间】:2026-01-28 14:15:02
【问题描述】:

下面的数组怎么转

['12345', '83747']

进入下面的对象数组

[ {'id': '12345'}, {'id': '83747'} ]

使用地图?

到目前为止我的尝试,iDs 是一个空数组,chunk 是一个字符串数组。:

obj.iDs.concat(
            chunk.map((item) => ({
                id: item,
            })),
        );

例如,我的 IDE 报告此代码没有问题:


const body = [{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'},{'id':'1234'}]

const batchGetRequestObj = {
        ids: [],
        targetProperties: ['contentID, updateDateTime'],
    };

function func() {
        try {
        chunkArray(
            body.map((item) => {
                return item.id;
            }),
            25,
        ).forEach((chunk) => {
            batchGetRequestObj.ids.concat(
                chunk.map((item) => ({
                    ids: item,
                })),
            );
            console.log(batchGetRequestObj);
        });
    } catch (e) {
        console.log(e);
    }
}

function chunkArray(array: string[], size: number) {
    const slicedArray = [];
    for (let i = 0; i < array.length; i += size) {
        slicedArray.push(array.slice(i, i + size));
    }
    return slicedArray;
}

Link to typescript playground

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 更新了我目前所拥有的
  • 您的地图正确吗?你在纠结什么?
  • 它输出一个空数组
  • 那么chunk 是什么?

标签: javascript arrays typescript object


【解决方案1】:

您正在使用 concat,它不会改变数组 - 您必须将值设置回变量

   var arr = ['12345', '83747']
   var newids = obj.ids.concat(arr.map( str => { return {"id" : str}});
   obj.ids = newids

【讨论】:

  • 谢谢。 OP当时没有那个代码。但我更新了我的答案concat
  • 他们没有。 (这就是为什么我要等到有人展示他们的努力示例后再回答)
  • 上面添加的示例
  • @notAChance - 相同的concat 问题将发生在您更新的代码中。见我上面的回答。在你的新代码batchGetRequestObj.ids = batchGetRequestObj.ids.concat(...
  • @JohnTyner 谢谢,我总是忘记这一点。
最近更新 更多