Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何循环json对象数据并将字符串拆分为变量_Javascript_Json_Reactjs - Fatal编程技术网

Javascript 如何循环json对象数据并将字符串拆分为变量

Javascript 如何循环json对象数据并将字符串拆分为变量,javascript,json,reactjs,Javascript,Json,Reactjs,我有一个元数据对象,如下所示: "metadata": { "item0": "[id: 123][name: hello world][size: large][quanity: 2][price: $1.00]" "item1": "[id: 456][name: test 123][size: small][quanity: 1][price: $2.00]" &qu

我有一个元数据对象,如下所示:

"metadata": {
    "item0": "[id: 123][name: hello world][size: large][quanity: 2][price: $1.00]"
    "item1": "[id: 456][name: test 123][size: small][quanity: 1][price: $2.00]"
    "total": "$4.00"
}
const items = []

metadata.map((field) => {
    if (field.contains("item")) {
        items.push({
            id: field.id,
            name: field.name,
            size: field.size,
            quanity: field.quanity,
            price: field.price,
        })
    }
})
如果有帮助,我可以更新此元数据的显示格式

我想循环使用此元数据并捕获
“item#”
字段,以将其字符串数据存储到单独的变量中

大概是这样的:

"metadata": {
    "item0": "[id: 123][name: hello world][size: large][quanity: 2][price: $1.00]"
    "item1": "[id: 456][name: test 123][size: small][quanity: 1][price: $2.00]"
    "total": "$4.00"
}
const items = []

metadata.map((field) => {
    if (field.contains("item")) {
        items.push({
            id: field.id,
            name: field.name,
            size: field.size,
            quanity: field.quanity,
            price: field.price,
        })
    }
})
为实现这一目标:

[
    {
        id: "123",
        name: "hello world",
        size: "large",
        quanity: "2",
        price: "$1.00"
    },
    {
        id: "456",
        name: "test 123",
        size: "small",
        quanity: "1",
        price: "$2.00"
    },
]

执行此操作的最佳方法是什么?

您可以尝试以下代码

let metadata = {
  "item0": "[id: 123][name: hello world][size: large][quanity: 2][price: $1.00]",
  "item1": "[id: 456][name: test 123][size: small][quanity: 1][price: $2.00]",
  "total": "$4.00"
}


let itemsArr = Object.keys(metadata).map(meta => {

  let splitItemKey = metadata[meta].split("][");
  let createObj = {};
  
  for(let s of splitItemKey){
    createObj[s.split(":")[0].replace("[","")] = s.split(":")[1]?.trim().replace("]","") || null;
  }
    return createObj;
});

console.log(itemsArr);

为什么不将“[id:123][name:hello world][size:large][quantity:2][price:$1.00]”格式化为对象而不是普通字符串。现在,您需要编写逻辑来从字符串(rregx)中提取数据。嗯,是的,如果我使用JSON.stringify,那么我会尝试一下。谢谢@munleashed:)