关于forEach遍历

关于forEach遍历

查看了教辅这个函数是用来遍历数组的,可是这里的json对象也可以遍历吗?

http://img1.sycdn.imooc.com//climg/5cca5f880001e6bb05820327.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

8回答
提问者 雨之赞歌 2019-05-07 09:16:20

这个我明白,其实我的问题是这样的:

http://img1.sycdn.imooc.com//climg/5cd0dbf1000140c506520826.jpg

上图中我们获得的响应数据是被json_encode转换为json字符串的一维数组(注意是一维数组),输出的结果为json格式字符串:

http://img1.sycdn.imooc.com//climg/5cd0dc0b0001ecd504650214.jpg
但是如果改为二维数组:

http://img1.sycdn.imooc.com//climg/5cd0dc220001056603610187.jpg
结果就不再是json字符串了,而是一个数组,里面包含了json格式的元素,请问这是为什么呢?按照我的理解,不应该出现数组的才对,应该全部变为json格式
http://img1.sycdn.imooc.com//climg/5cd0dc5000017aea04270210.jpg

  • 您好,ajax.responseText为字符串,此时输出的信息是字符串,并不是数组。可以看下之前的截图,数组在控制台中是可以点开的哦~祝学习愉快!
    2019-05-07 11:26:07
  • 提问者 雨之赞歌 回复 好帮手慕查理 #2
    我知道啊,是字符串, 但是为什么还是数组格式呢?
    2019-05-07 11:35:20
  • 好帮手慕查理 回复 提问者 雨之赞歌 #3
    转换之后的格式就是这样,此时已经不是数组,只是字符串的格式,转换之后将数组信息转换为了json字符串,但是其它符号是没有改变的,所以出现截图效果。祝学习愉快!
    2019-05-07 13:49:06
凯旋132 2019-05-06 21:55:13

http://img1.sycdn.imooc.com//climg/5cd03c9600017dac06120324.jpg

再次用代码说明一下,建议仔细看一下Ajax.js的代码,理清思路

凯旋132 2019-05-06 21:52:52

forEach确实是遍历数组的,咱们编写的Ajax中已经将JSON字符串转换的方法写进里面了,这里用到的参数item已经是处理过的了,因此item已经不是一个JSON字符串,而是一个数组了

guly 2019-05-05 10:55:57

你好,res.rows.forEach(function (item) {

的功能是将数组res.rows进行循环该数组值赋值给item,每隔元素中的值赋给item作为item的对象,如打印结果如图,res.rows表示json对象中的数组

http://img1.sycdn.imooc.com//climg/5cce50150001c47b07560413.jpg

最后使用对象的调用方式进行赋值:如:

<td>' + item.username + '</td>

如果解决了您的问题请采纳,祝学习愉快!

  • 提问者 雨之赞歌 #1
    所以为什么 res.rows 还是个数组? 不是转换为json对象了吗?
    2019-05-05 11:01:49
  • guly 回复 提问者 雨之赞歌 #2
    你好,res.rows 是数组,数组中的元素循环转换为了对象。比如 array[0]对应的值转化为了对象赋给了item
    2019-05-05 15:19:54
  • 提问者 雨之赞歌 回复 guly #3
    那他本身还是个数组吗?只是转换了值?
    2019-05-06 09:07:46
提问者 雨之赞歌 2019-05-04 15:43:00

不知道老师是否能理解我的意思,其实就是个小问题,我重新举个例子

<?php

$arr = [
    ["name" => "rose", "sex" => "girl", "age" => "18"],
    ["name" => "rose", "sex" => "girl", "age" => "18"],
    ["name" => "rose", "sex" => "girl", "age" => "18"],
];

echo json_encode($arr);

--- 这里转换为了json格式字符串,可是为什么输出的结果一维数组仍然存在呢?也就是说仍然是个数组格式?

http://img1.sycdn.imooc.com//climg/5ccd42780001299310540079.jpg


提问者 雨之赞歌 2019-05-04 15:27:57

然后我尝试显示响应数据的内容,这里的rows内容为什么还是个array? 但是rows的键值都变成了一个个json对象

http://img1.sycdn.imooc.com//climg/5ccd3e8a000192f812190416.jpg
http://img1.sycdn.imooc.com//climg/5ccd3ebe0001a2b907730304.jpg

  • 提问者 雨之赞歌 #1
    这也可以解释 forEach可以遍历这个rows了,因为他是个数组,只是键值是json对象。但是我不明白的是,为什么rows还是个数组格式?! 因为调用$.get的时候已经处理为json对象了!
    2019-05-04 15:32:28
好帮手慕查理 2019-05-04 13:21:00

您好,json_encode返回值的JSON表示形式,是返回的json编码的字符串。祝学习愉快!

  • 提问者 雨之赞歌 #1
    可是我们接收到的响应数据是经过JSON.parse处理的,所以在forEach遍历res.rows的时候,遍历的应该是一个json对象才对吧? 但是forEach不是遍历的是数组吗?
    2019-05-04 15:24:04
提问者 雨之赞歌 2019-05-02 11:44:16


请问老师为什么这里rows仍然是个数组? 可是里面每项键值都变为了json对象,我们在users.php最后不是把整个$data都转换为json字符串了吗,然后获取响应数据的时候应该都是JSON对象呀,为什么rows还是数组呢?
http://img1.sycdn.imooc.com//climg/5cca66b50001e64508260249.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师