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:)