Re: [問題] 字串變數處理
※ 引述《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
推
04/15 13:57, , 1F
04/15 13:57, 1F
推
04/15 20:06, , 2F
04/15 20:06, 2F
推
04/15 20:18, , 3F
04/15 20:18, 3F
我認為這不能算是判斷式
因為其原理是利用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值的規則
下面推文有提到了
→
04/15 20:19, , 4F
04/15 20:19, 4F
→
04/15 20:20, , 5F
04/15 20:20, 5F
→
04/15 20:20, , 6F
04/15 20:20, 6F
推
04/15 20:24, , 7F
04/15 20:24, 7F
沒錯,會有這樣的問題
→
04/15 20:25, , 8F
04/15 20:25, 8F
→
04/15 20:25, , 9F
04/15 20:25, 9F
推
04/15 20:27, , 10F
04/15 20:27, 10F
→
04/15 20:27, , 11F
04/15 20:27, 11F
→
04/15 20:28, , 12F
04/15 20:28, 12F
推
04/15 20:30, , 13F
04/15 20:30, 13F
→
04/15 20:30, , 14F
04/15 20:30, 14F
這樣做的確保險多了
不過考慮到題目本身就想找一個技巧
而非完全解
不然直接請原po給str初始值就好了
→
04/15 20:36, , 15F
04/15 20:36, 15F
→
04/15 20:38, , 16F
04/15 20:38, 16F
原po的array內是object
→
04/15 20:40, , 17F
04/15 20:40, 17F
→
04/15 20:41, , 18F
04/15 20:41, 18F
→
04/15 20:48, , 19F
04/15 20:48, 19F
感謝兩位提醒
雖然我這樣回很像在挑語病 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)
推
04/16 00:13, , 20F
04/16 00:13, 20F
※ 編輯: No 來自: 111.252.102.243 (04/16 00:40)
→
04/16 09:03, , 21F
04/16 09:03, 21F
→
04/16 09:03, , 22F
04/16 09:03, 22F
→
04/16 09:03, , 23F
04/16 09:03, 23F
→
04/16 09:04, , 24F
04/16 09:04, 24F
推
04/16 12:48, , 25F
04/16 12:48, 25F
感謝更正
推
04/16 13:23, , 26F
04/16 13:23, 26F
→
04/16 13:24, , 27F
04/16 13:24, 27F
→
04/16 13:25, , 28F
04/16 13:25, 28F
※ 編輯: No 來自: 111.252.102.243 (04/16 16:46)
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章