我有这样一个json:

{
    "status": 1,
    "message": "ok",
    "data": [
        {
            "tenor": "23"
        },
        {
            "tenor": "17"
        },
        {
            "tenor": "37"
        },
        {
            "tenor": "27,29"
        },
        {
            "tenor": "33,35"
        }
    ]
}

我希望结果是这样的:
{ "status": 1, "message": "ok", "data": [ { "tenor": "23" }, { "tenor": "17" }, { "tenor": "37" }, { "tenor": "27" }, { "tenor": "29" }, { "tenor": "33" }, { "tenor": "35" } ] }

我试过的:
var arrayCoba = [];
var array1 = { "status": 1, "message": "ok", "data": [ { "tenor": "23" }, { "tenor": "17" }, { "tenor": "37" }, { "tenor": "27,29" }, { "tenor": "33,35" } ] }

for(var i = 0; i<array1.data.length; i++){
    var string = array1.data[i].tenor;
    var substring = ",";

    if(string.includes(substring) == true){
        var tenor = array.data[i].tenor;
        var tenorArr = tenor.split(',');
        var dataTenor = tenorArr.map(tenor => ({ tenor }));
        arrayCoba.push(dataTenor);
    }
 }

 var dataHasil = array1.data.concat(arrayCoba);

 return res.json({status:1,message:'ok',data:dataHasil});


但我得到的结果是:
{
    "status": 1,
    "message": "ok",
    "data": [
        {
            "tenor": "23"
        },
        {
            "tenor": "17"
        },
        {
            "tenor": "37"
        },
        {
            "tenor": "27,29"
        },
        {
            "tenor": "33,35"
        },
        [
            {
                "tenor": "27"
            },
            {
                "tenor": "29"
            }
        ],
        [
            {
                "tenor": "33"
            },
            {
                "tenor": "35"
            }
        ]
    ]
}

有人能帮我吗?谢谢您。。

最佳答案

var dataTenor = tenorArr.map(tenor => ({ tenor }));返回tenor对象数组。
arrayCoba.push(dataTenor);将数组添加到其他数组中,这样就可以得到数组中的数组。
使用spread operator>arrayCoba.push(...dataTenor);

for (var i = 0; i < array1.data.length; i++) {
    var string = array1.data[i].tenor;
    var substring = ",";

    if (string.includes(substring) == true) {
        var tenor = array1.data[i].tenor;
        var tenorArr = tenor.split(',');
        var dataTenor = tenorArr.map(tenor => ({
            tenor
        }));
        arrayCoba.push(...dataTenor);
    } else {
        arrayCoba.push(array1.data[i]);
    }
}

var dataHasil = arrayCoba;

更新:另一种使用map操作符的方法。
var substring = ',';

var copyDataTenors = array1.data;
var arrayCoba = "".concat(copyDataTenors
    .map(obj => obj.tenor))
    .split(substring)
    .map(tenorString => ({
        'tenor': tenorString
    }))

var dataHasil = arrayCoba;

关于arrays - 如何从1个字符串更改 Node js中的格式数组成为另一个对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58011187/

10-08 22:01
查看更多