为了账号安全,请及时绑定邮箱和手机立即绑定

给定JSON字符串,运行以下代码?请解释为什么会得出这个结果

给定JSON字符串,运行以下代码?请解释为什么会得出这个结果

吖叻Desh 2017-08-30 16:34:19
在谷歌浏览器运行的结果是这样的var array = ["尺码", {            "reqt": "XXL",            "reqp": "30",            "selected": true        },        "颜色", {            "reqt": "灰色",            "reqp": "20",            "selected": true        }    ]    var tmp = {        name: "标题1",        reui: {            "reqt": "灰色",            "reqp": "20"        }    }    for (var i = 0; i < array.length; i = i + 2) {        tmp.name = array[i]        tmp.reui = array[i + 1]        console.log(tmp)    }
查看完整描述

2 回答

已采纳
?
橋本奈奈未

TA贡献436条经验 获得超108个赞

json字符串不是这么定义的你这等于是定义一个数组,第0个元素是尺码这个字符串,第一个元素是那个对象,以此类推

查看完整回答
反对 回复 2017-08-30
  • 吖叻Desh
    吖叻Desh
    嗯,是个数组~那数据展开之后变样了怎么说??就是图中第一个对象没展开之前是name是尺码,点开之后name显示成颜色了
  • 橋本奈奈未
    橋本奈奈未
    因为你是循环打印tmp对象啊,在JS中对象是引用类型,然后你每次又更改tmp对象,是会影响上一次的引用的,这个比较复杂,可能不是那么好理解。你debugger看下执行过程吧。 var array = ["尺码", { "reqt": "XXL", "reqp": "30", "selected": true }, "颜色", { "reqt": "灰色", "reqp": "20", "selected": true } ] var tmp = { name: "标题1", reui: { "reqt": "灰色", "reqp": "20" } } var arr=[]; for (var i = 0; i < array.length; i = i + 2) { arr.push({ name: array[i], reui: array[i + 1] }) tmp.name = array[i]; tmp.reui = array[i + 1]; console.log(tmp) } console.log(arr); 另外你可以对比这段代码看看,arr里的结果就是正确的。细细体会一下吧。
  • 吖叻Desh
    吖叻Desh
    可以的,大兄弟~不过我从你这个说法改一下就行了,不用新建一个数组; 把tmp改成这样 var tmp = {} ; 然后在console.log(tmp)后面把tmp释放掉就可以了,例如:console.log(tmp); tmp = {}; 这样输出的结果也是正确的
点击展开后面2
?
7七月

TA贡献4条经验 获得超14个赞

你这个定义的是一个js对象,并不是json字符串,你是想得到什么效果呢?

查看完整回答
反对 回复 2017-08-31
  • 吖叻Desh
    吖叻Desh
    就是这样的,我想把前两个组成一个对象,例如:我想把这个数组的两个组成一对,赋值给这个tmp,使得这个对象变成我上面定义的一样
  • 2 回答
  • 0 关注
  • 1982 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信