最近做小程序需要用到用wx:for来循环 数组对象,说实在有点懵,就自己研究了一下。
首先要了解JSON.stringify(),是把JSON对象字符串化;JSON.parse()把字符串JSON化。
JSON.parse(JSON.stringify([{},{}])) //就得到对象本身,这也是深复制的一种方法
那么有没有想过多嵌套几层会怎么样哈哈哈哈~
console.log(this.data.test)
console.log('加一层 :'+JSON.stringify(this.data.test))
console.log('加二层 :' +JSON.stringify(JSON.stringify(this.data.test)))
console.log('加三层 :' +JSON.stringify(JSON.stringify(JSON.stringify(this.data.test))))
console.log('加三层 解一层:' +JSON.parse(JSON.stringify(JSON.stringify(JSON.stringify(this.data.test)))))
console.log('加二层 解一层:' +JSON.parse(JSON.stringify(JSON.stringify(this.data.test))))
console.log(JSON.parse(JSON.stringify(this.data.test)))
这就是最后的结果 哈哈哈,相信很容易对比出来。那么我为什么要试这东西?是因为在想字符串化后继续字符串化会是怎么样。会不变化还是有所改变。事实证明有变化,不能多次使用,然后JSON格式如果继续parse是会报错的!
最后发现wx:for是可以循环数组对象的 就是[{},{}]。
但是!在判断数组对象中是否含有数组的时候不能直接用indexOf()来判断!必须都用JSON.stringify()字符串化后才可以判断!如果不存在indexOf()会返回-1
如果需要使用数组的方法就只能用数组对象直接使用,不能字符串化后才使用。