Ajax 板


LINE

※ 引述《kalapon (D桃)》之銘言: : 不知道怎麼把字串變數第一次處理的undefined消掉 : 頂多就是先宣告空字元給它 : for (var i=0,j=json_object.length;i<j;i++){ : jsonstr += json_object[i]['model']+"<br>"+json_object[i]['desc']+"<br>"; : } : 結果: : undefinedmodel-aa : desc-aa : model-bb : desc-bb : 我知道用中間加個判斷是否為空值就可以,但還是想請教高手是否有更方便的方法 : 謝謝 提供一個解法,但沒有更方便 囧 var test = ['test1','test2','test3','test4','test5']; var str; document.write(str); //確定目前str為undefined document.write('<br>-----<br>'); for(var i in test) str = (str||'') + test[i] + '<br>'; document.write(str); 結果: undefined ----- test1 test2 test3 test4 test5 -- 雖然可以達成需求..可是這樣寫反而很怪 XD --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.252.102.243
1F:推 terlin10:No給推~ 04/15 13:57
2F:推 kalapon:雖然我看不懂str||'' 可是結果是我要的,有空來試試,謝謝 04/15 20:06
3F:推 s25g5d4:還是判斷式... 簡單的說就是 a or b 04/15 20:18
我認為這不能算是判斷式 因為其原理是利用JavaScript邏輯運算子的 && || 的特性 其運算過程是由左邊的運算元開始 往右依序看"運算結果" (此指 a==5、b>5、c+d、e>>5、f&255 等等) 只要遇到"運算結果"觸發可回傳的狀態,即回傳 回傳什麼?運算元的"值" 巧妙的就在這個回傳球啊 || 的運算過程 每一個運算結果轉換為Boolean值 (暫稱此值為bool) 第一次碰到bool為true時,回傳該運算元的"值" 當所有bool都是false,回傳的是最右邊的"值" 如果運算結果是Boolean值,或運算元資料型態是Boolean 那返回值是很直觀的true或false x = 'me'=='30cm' || '鄉民'== '30cm'; // x為true(誤); 得到 x 為 fasle 若運算元是non-Boolean,其返回的是其"值"(value),而非Boolean值 a = false || true; b = 'food' || true; c = false || 'yo~' || 'hi~'; d = false || '' || 'kerker'; e = false || '' || 0; 上面會得到 a 為 true b 為 'food' //回傳其值 c 為 'yo~' d 為 'kerker' e 為 0 //當所有運算結果邏輯上是false,最後是回傳最右邊的值 而 && 邏輯運算過程: 其返回是"值"或者Boolean值的原理是與||相同 不同的是,其返回的"值"來自哪一個結果 或者可以說是整個相反過來 同樣,每一個運算結果轉換為Boolean值 (暫稱此值為bool) 當所有bool都是true,回傳的是最右邊的"值" 否則,回傳第一次碰到bool為false的運算元的"值" a = '1' && '2' && '3'; b = '1' && '2' && false; c = 1 && 0 && true; 上面會得到 a 為 '3' b 為 false c 為 0 竟然打了一堆 簡單來說 邏輯運算回傳的並非其"結果",而是其"值" 會得到true和false也是因為它們即是Boolean型態的值 所以這解法頂多說是邏輯運算子和運算元做運算 並使用其回傳結果而已 而non-Boolean型態轉成Boolean值的規則 下面推文有提到了
4F:→ s25g5d4:在JS裡 預期結果為boolean型態時 undefined會被轉成false 04/15 20:19
5F:→ s25g5d4:所以str假如是undefined 就會轉成false 因此會跳到||右邊 04/15 20:20
6F:→ s25g5d4:的"" 04/15 20:20
7F:推 s25g5d4:不過這樣有個缺點 假如str為數字0 那0將不會被輸出 04/15 20:24
沒錯,會有這樣的問題
8F:→ s25g5d4:因為0也會被轉成false 所以我還是喜歡用?: 04/15 20:25
9F:→ s25g5d4:因為用?:可以用str === undefined來判斷 04/15 20:25
10F:推 s25g5d4:http://jsfiddle.net/BV2JS/ 範例 04/15 20:27
11F:→ s25g5d4:另外除了0以外 任何在期待型態為boolean而產生的型態改變 04/15 20:27
12F:→ s25g5d4:情況下 只要轉成false的都會產生這種情況 04/15 20:28
13F:推 s25g5d4:不過如果確定str是字串的話 只要不是空字串都不會被轉成fa 04/15 20:30
14F:→ s25g5d4:lse就是了 04/15 20:30
這樣做的確保險多了 不過考慮到題目本身就想找一個技巧 而非完全解 不然直接請原po給str初始值就好了
15F:→ grence:test.join('<br');//XD array不建議用 for in,不保證順序 04/15 20:36
16F:→ grence:test.join('<br>'); 04/15 20:38
原po的array內是object
17F:→ grence:最近一個提到這件事的文章 http://goo.gl/e9zDI 04/15 20:40
18F:→ s25g5d4:本版2875 #1DYCKApq (Ajax) 就有說到... 04/15 20:41
19F:→ grence:就我看到的時間,那是第三近的…總之就是這問題很常見。 04/15 20:48
感謝兩位提醒 雖然我這樣回很像在挑語病 XDD 不過一方面題目沒要求排序 另一方面,也要前提是必須確保順序時,才不建議用 for in for in本身並不是問題,問題在可能被誤用 容我還它一點點清白 http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays 雖然這裡還是講它的issue比較多 XDD ※ 編輯: No 來自: 111.252.102.243 (04/16 00:11)
20F:推 dreamerslab:受用良多 :) 04/16 00:13
※ 編輯: No 來自: 111.252.102.243 (04/16 00:40)
21F:→ TonyQ:主要還是在於避免可能的問題。 04/16 09:03
22F:→ TonyQ:其實沒什麼清不清白的問題,只是把可能會有的問題點出來而已 04/16 09:03
23F:→ TonyQ:把所有可能的影響講清楚,讓使用者自己選囉。 04/16 09:03
24F:→ TonyQ:所謂的trick,另一個角度也是雙面刃。謹慎為上。XD 04/16 09:04
25F:推 tomin:b = '1' && '2' && false; //得到false 04/16 12:48
感謝更正
26F:推 kalapon:感謝and筆記先,目前就是用空字元把它矇混過去了,至少沒有 04/16 13:23
27F:→ kalapon:出現undefined就可以,user只會當作上面多了一行留白 04/16 13:24
28F:→ kalapon:我會拿這個地方好好練習各位說的方法,感恩 04/16 13:25
※ 編輯: No 來自: 111.252.102.243 (04/16 16:46)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP