亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

給定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 關注
  • 2025 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號