我试图为一个游戏(维多利亚二世)创建一个工具,保存游戏(整个保存游戏没有这种格式,只有我打算使用的部分,剩下的保存维多利亚二世有这种格式的游戏现在没有任何重要性:
AAA = {
B = {
random_text = 1000.00
another_one = 400.00
}
C= {
no_importance = 222
}
D = {
random_text = 5.00
another_one = 10.00
}
}
该工具如何运作?该工具将计算国家AAA的GDP(有100个国家,首先我想计算AAA的GDP,但我想计算每一个。每个国家的代码是大写的三个字母),B参数是国内生产的一些商品(random_text和another_one),C参数没有重要性,因此,工具会忽略它。 D参数是某些商品的价格(在这种情况下,random_text和another_one,如果没有错误,则有20种商品)。因此,该工具(在JavaScript中)必须将该国家的商品生产与每种商品的价格相乘,然后与每个国家的GDP进行对比。问题是:我如何用JavaScript做到这一点?我试图使用regexp but I'm always failing,代码捕获参数C并使工具失败。对于每个国家,我想在表格中插入其名称及其各自的GDP。
注意:在上面的链接中,有关于该工具的工作的更多评论。
答案 0 :(得分:0)
假设您显示的格式是可靠的,您可以通过对.replace()
的一些调用快速转换为JSON,然后解析该JSON并根据需要处理生成的对象。
我不确定我是否理解你对GDP计算的看法,但我认为你的意思是AAA的GDP将是每个B值乘以其相应D值的总和,即1000.00 * 5.00 + 400.00 * 10.00 = 9000。
var input = ' /* your input here */ ';
var json = '{'
+ input.replace(/([^\s]+)\s*=/g,'"$1":')
.replace(/([^{\s])\n(\s*[^{}])/g,'$1,\n$2')
.replace(/,(\s*})/g,'$1')
+ '}';
var obj = JSON.parse(json);
var output = Object.keys(obj).map(function(v) {
return {
country: v,
gdp: Object.keys(obj[v].B).reduce(function(p, c) {
return p + obj[v].B[c] * obj[v].D[c];
}, 0)
};
});
运行上述内容后,output
变量将是一个对象数组,其中包含以下格式的详细信息:
[ { "country": "AAA", "gdp": 9000 }, //etc. ]
展开以下内容并运行它以查看它与三个国家/地区合作:
var input = `AAA = {
B = {
random_text = 1000.00
another_one = 400.00
}
C= {
no_importance = 222
}
D = {
random_text = 5.00
another_one = 10.00
}
}
BBB = {
B = {
random_text = 111.00
another_one = 222.00
}
C= {
no_importance = 222
}
D = {
random_text = 3.00
another_one = 4.00
}
}
CCC = {
B = {
x = 10.0
y = 20.0
z = 30.0
}
C= {
no_importance = 222
}
D = {
x = 1.00
y = 2.00
z = 3.00
}
}`;
var json = '{'
+ input.replace(/([^\s]+)\s*=/g,'"$1":')
.replace(/([^{\s])\n(\s*[^{}])/g,'$1,\n$2')
.replace(/,(\s*})/g,'$1')
+ '}';
var obj = JSON.parse(json);
var output = Object.keys(obj).map(function(v) {
return {
country: v,
gdp: Object.keys(obj[v].B).reduce(function(p, c) {
return p + obj[v].B[c] * obj[v].D[c];
}, 0)
};
});
console.log(output);