将字符串数组转换为每个具有一个属性的对象数组?

时间:2021-05-02 21:56:19

标签: javascript arrays typescript object

如何翻转下面的数组

['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

1 个答案:

答案 0 :(得分:1)

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

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