返回信息流我想挨个输出{"name":"小明","age":22},{"name":"小红","age":23},
但是下面这种写法只能输出"{"name":"小红","age":23}"。
var arr = [{name:"小明", age:22}, {name:"小红", age: 23}];
for(var i=0; i<arr.length;i++)
{
JSON.stringify(arr[i])
};
如果换成这样,
var arr = [{name:"小明", age:22}, {name:"小红", age: 23}];
for(var i=0; i<arr.length;i++)
{
JSON.stringify(arr)
};
则输出,
"[{"name":"小明","age":22},{"name":"小红","age":23}]"
这是怎么回事?
这是一条镜像帖。来源:北邮人论坛 / java-script / #1673同步于 2017/3/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
【问题】JSON.stringify()不能用于循环输出??
jy11152721
2017/3/13镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你想什么呢?
第一种写法你没发现只是输出第二个对象么?控制台的输出不等于程序的输出,内存中同一块地址被写了2次,当然只输出最后的结果了
第二种写法内存地址也是被写2次,只是都是同一个arr数组,其实还是第二个JSON.stringify的结果,只是你看不清而已。
控制台运行:
JSON.stringify(123);JSON.stringify(234);
输出“234”
程序里运行:
JSON.stringify(123);JSON.stringify(234);
没意义
程序里运行:
JSON.stringify(123);console.log(JSON.stringify(234));
输出“234”
控制台里运行:
JSON.stringify(123);console.log(JSON.stringify(234));
输出234 undefined
你猜这几段段代码在控制台和程序中分别会输出什么?
// 1
JSON.stringify(123);JSON.stringify(234);var test = 123;test;
// 2
JSON.stringify(123);JSON.stringify(234);var test = 123;delete test;
// 3
JSON.stringify(123);JSON.stringify(234);var test = 123;delete test;null;
// 4
var arr = [{name:"小明", age:22}, {name:"小红", age: 23}];
for(var i=0; i<arr.length;i++)
{
JSON.stringify(arr[i]);delete arr[i];
};
正常写法如下:
var arr = [{name:"小明", age:22}, {name:"小红", age: 23}];
for(var i=0; i<arr.length;i++){console.log(JSON.stringify(arr[i]))};
第一:和循环无关,不会有语言设计成JSON.stringify()代表的某个方法不能用于for循环,这是语言设计的知识。
第二:输出要用console.log,不是任何输出都有意义,var test = 123 // 输出undefined,定义了个undefined?
第三:不要拿控制台学js,自己拿node做本地环境,请搭webserver。
第四:关注点分离,不要把for和JSON.stringify扯上关系,调bug可能会靠猜,也要有原则地猜,否则是bug+bug。
在源码和控制台输出分别如下?
// 1
123 234 123
123
// 2
123 234 false
false
// 3
123 234 false null
null
//4
true true
true
【 在 logsin 的大作中提到: 】
: 你想什么呢?
: 第一种写法你没发现只是输出第二个对象么?控制台的输出不等于程序的输出,内存中同一块地址被写了2次,当然只输出最后的结果了
: 第二种写法内存地址也是被写2次,只是都是同一个arr数组,其实还是第二个JSON.stringify的结果,只是你看不清而已。
: ...................
没有console的,源码中都无输出
【 在 jy11152721 的大作中提到: 】
: 在源码和控制台输出分别如下?
: // 1
: 123 234 123
不好意思,还得请教前辈:我刚接触前端十来天,觉得它是一种不难但是比较繁琐的工作,不像后台开发那么费脑子,不知道是不是这样?
【 在 logsin 的大作中提到: 】
: 没有console的,源码中都无输出
【 在 jy11152721 的大作中提到: 】
: 不好意思,还得请教前辈:我刚接触前端十来天,觉得它是一种不难但是比较繁琐的工作,不像后台开发那么费脑子,不知道是不是这样?
第一,看下这篇文章,了解下前端具备哪些能力
http://www.jianshu.com/p/a2eff3d721cb?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
第二,前端不等于做页面,十天时间不能给讲太多前端能干什么,但是你可以了解下全栈工程师这个概念
第三,编程没有不费脑子的,前后端看问题的角度不一样
第四,2016年前端学习体验
http://mp.weixin.qq.com/s/sYFhD55nHsxtjN_f_wfPLA
第五,从你提的问题,感觉你不是计算机专业,底子有点薄