[英]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.