首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的JSON数组不能工作

简单的JSON数组不能工作
EN

Stack Overflow用户
提问于 2017-04-19 02:35:26
回答 4查看 1.6K关注 0票数 0

这个问题应该很容易解决,但是经过反复的尝试和大量的谷歌搜索,我没有答案。我正在尝试创建一个简单的循环,它将显示来自JSON变量的值。

代码语言:javascript
复制
<p id="demo"></p>

<?php echo ($_SESSION['amort_JSON']); 
	
	?>

	<script>
		
	var obj, i, j, x = 0;
	var obj = JSON.parse(<?php echo json_encode($_SESSION['amort_JSON']) ?>); 
		
	for (i in obj.interest_paid) {
		x += obj[i].interest_paid;
	}

	//document.write(obj[8].interest_paid);
	document.getElementById("demo").innerHTML = x;
	
	</script>

$_session['anirt_JSON']返回以下值

代码语言:javascript
复制
[{
    "periodic_pmt": "2",
    "principle_balance": 416997.37661705,
    "principle_paid": 0,
    "ttl_principle_paid": 1002.6233829502,
    "interest_paid": 0,
    "ttl_interest_paid": 866.83015878773
}, {
    "periodic_pmt": 3,
    "principle_balance": 416600.29804453,
    "principle_paid": 538.02630958206,
    "ttl_principle_paid": 1540.6496925323,
    "interest_paid": 396.7004612869,
    "ttl_interest_paid": 1263.5306200746
}, {
    "periodic_pmt": 4,
    "principle_balance": 416203.59758324,
    "principle_paid": 538.40406076641,
    "ttl_principle_paid": 2079.0537532987,
    "interest_paid": 396.32271010256,
    "ttl_interest_paid": 1659.8533301772
}]

谢谢你的帮助。学习很有趣。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-19 02:55:06

为了通过obj数组的索引i (使用obj[i])访问其数组中的每个项,您需要遍历数组的所有可能的索引值:0通过obj.length - 1

代码语言:javascript
复制
for (var i = 0; i < obj.length; i++) {

这将指示JavaScript解释器:

  1. 0开始,
  2. 在到达obj.length之前停止(即在obj.length - 1结束),以及
  3. 每次通过1递增。
票数 0
EN

Stack Overflow用户

发布于 2017-04-19 03:17:26

由于obj是JSON对象的数组,所以可以使用forEach循环访问每个元素。

代码语言:javascript
复制
var obj = [{"periodic_pmt":"2","principle_balance":416997.37661705,"principle_paid":0,"ttl_principle_paid":1002.6233829502,"interest_paid":0,"ttl_interest_paid":866.83015878773},{"periodic_pmt":3,"principle_balance":416600.29804453,"principle_paid":538.02630958206,"ttl_principle_paid":1540.6496925323,"interest_paid":396.7004612869,"ttl_interest_paid":1263.5306200746}],
 x=0;

obj.forEach(function (element, index) {

    x += element.interest_paid;


});

console.log(x);

票数 0
EN

Stack Overflow用户

发布于 2017-04-19 03:28:09

你的代码应该是

代码语言:javascript
复制
for (i in obj) {
    x += obj[i].interest_paid;
}

obj是被解析的json数组,您应该遍历它。obj.interest_paid不存在,因为obj是一个对象数组。

这是一个演示

编辑:

正如@nnnnnn建议的那样,字符串周围应该有引号。

代码语言:javascript
复制
JSON.parse('<?php echo json_encode($_SESSION['amort_JSON']) ?>');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43485350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档