繁体   English   中英

Javascript 将数组值字符串转换为数组

[英]Javascript convert array value string to array

如何将此数组字符串值转换为数组。

 data = ["genStatus: INPROGRESS,DONE", 
    "status: ACTIVE,DEACTIVATE"]

预期的 output 应该是这样的:

data = {
    genStatus: ["INPROGRESS","DONE"],
    status: ["ACTIVE", "DEACTIVATE"]
}

或者应该是这样的

data = [{ name: 'genStatus', data: [{name: 'INPROGRESS'}, {name: 'DONE'}]},
{ name: 'status', data: [{name: 'ACTIVE'}, {name: 'DEACTIVATE'}]}]

 const data = ["genStatus: INPROGRESS,DONE", "status: ACTIVE,DEACTIVATE"] const transformed = data.reduce((object, item) => { // get key and value const [key, value] = item.split(' ') // assign key and split value object[key] = value.split(',') return object }, {}) console.log(transformed)

 const data = ["genStatus: INPROGRESS,DONE", "status: ACTIVE,DEACTIVATE"] const transformed = data.map(item => { const [key, value] = item.split(' ') return { name: key, data: value.split(',').map(value => ({ name: value })) } }) console.log(transformed)

好的,我会给你我最好的主意:

let arr = [];
data.forEach(ele => arr.push(ele.split(":")));

这将返回[ [ 'genStatus', ' INPROGRESS,DONE' ], [ 'status', ' ACTIVE,DEACTIVATE' ] ]

从这里您应该能够找出 rest。 您将必须创建另一个空数组并将所有 arr[i][0] 值作为空数组推送。 然后遍历 rest 并将其推入那些空的 arrays 内。

我在这里分享了我的方法。 希望你能理解。

 const data = ["genStatus: INPROGRESS,DONE", "status: ACTIVE,DEACTIVATE"] // Approach 1 const obj = data.reduce((acc, curr) => { const [key, data] = curr.split(":") acc[key] = data.trim().split(",") return acc; }, {}) console.log(obj) // Approach 2 const obj2 = data.map(el => { const [key, data] = el.split(":") const obj = {}; const dataArray = data.trim().split(",").map(d => ({ name: d })) obj[key] = dataArray return obj; }) console.log(obj2)

这是我想出的:

function parse_data(data) {
    var result = {}
    data.forEach(e => {
       e = e.split(":");
       var key = e[0];
       var value = [];
       e[1].split(",").forEach(x => {value.push(x.trim())});
       result[key] = value;
    });

    return result;
 }

Output:

{"genStatus":["INPROGRESS","DONE"],"status":["ACTIVE","DEACTIVATE"]}

另一种方法:

function another_parse_data(data) {
    var result = []
    data.forEach(e => {
        e = e.split(":");
        var key = e[0];
        var value = [];

        e[1].split(",").forEach(x => {value.push({"name": x.trim()})});

        var presult = {}
        presult["name"] = key
        presult["data"] = value

        result.push(presult)
      });

    return result;
 }

Output:

[{"name":"genStatus","data":[{"name":"INPROGRESS"},{"name":"DONE"}]},{"name":"status","data":[{"name":"ACTIVE"},{"name":"DEACTIVATE"}]}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM