假设我有两个 JSON 字符串:
json1 = [{"hc-key":"ar-tf","value":221},{"hc-key":"ar-ba","value":10820},{"hc-key":"ar-sj","value":230}]
json2 = [{"hc-key":"ar-ba","value":2890151},{"hc-key":"ar-sj","value":15625084},{"hc-key":"ar-tf","value":367828}]
我想做的是通过“hc-key”将它们连接到一个新的JSON字符串中,其中新的“value”是结果将 json1 中的值除以 json2 中的值。在 JavaScript 中。
请注意,json2 中的数据与 json1 中的数据顺序不同,但它们都具有完全相同的键。
生成的 JSON 应该是:
result = [{"hc-key":"ar-ba","value":10820/2890151},{"hc-key":"ar-sj","value":230/15625084},{"hc-key":"ar-tf","value":221/367828}]
(为了澄清起见,我省略了结果值)
谢谢。
最佳答案
Robert 是正确的,连接在服务器端更好,但是您想要做的事情当然可以通过使用一些 JavaScript 循环来实现。
对于这个例子,我没有考虑错误处理,但我还建议在除法之前确认您有实数,并且您没有除以零。
var json1 = [
{"hc-key":"ar-tf","value":221},
{"hc-key":"ar-ba","value":10820},
{"hc-key":"ar-sj","value":230}];
var json2 = [
{"hc-key":"ar-ba","value":2890151},
{"hc-key":"ar-sj","value":15625084},
{"hc-key":"ar-tf","value":367828}];
var result = [];
for(var i = 0; i < json1.length; i++)
{
var key = json1[i]['hc-key'];
for(var j = 0; j < json2.length; j++) {
if(json2[j]['hc-key'] == key) {
result.push({
"hc-key":key,
"value": json1[i]['value'] / json2[j]['value']
});
break;
}
}
}
//show results
var key, value;
var $results = $('.results tbody');
for(var i = 0; i < result.length; i++)
{
key = result[i]['hc-key'];
value = result[i]['value'];
$results.append('<tr><td>' + key + '</td><td>' + value + '</td></tr>');
}
td {
padding-right: 15px;
text-align: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<b>results:<b>
<table class="results">
<tbody></tbody>
</table>
关于javascript - JSON连接数据之间如何进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30200821/