將對象、字符串轉爲數組常用的幾種方法有:
1. [].slice.call(對象名、數組名);
2. Array.from(對象名、數組名);
看着很簡單的樣子,但是實際操作很容易就掉坑裏了!!!我就是從坑裏爬出來纔來寫的這篇博客!說多了都是淚,不費話了,看下面的例子:
var myJson = {
name : "張三",
age : 21,
sex : "男"
}
上面的代碼是絕壁正確的,語法也沒有任何錯誤,但你會發現無論使用[].slice.call(對象名、數組名); 還是 Array.from(對象名、數組名); 拿到的都是空數組!這就是所說的坑,這兩個東西有個隱性要求,對象中必須要有 length 鍵值對,其餘 鍵名 還必須是數字。var myJson = {
length : 2,
0 : 1,
1 : "a"
}
心想老子就用字符當鍵名行不行呢?!!var Json = {
length : 2,
"z" : 1,
1 : 2
}
分別是console.log([].slice.call(Json)); console.log(Array.from(Json)); 的結果。
顯而易見。。。胳膊是拗不過大腿的
再來看 字符串轉數組
var str2 = "123456"
console.log([].slice.call(str2));
console.log(Array.from(str2));
結果好生令人感動,字符串轉數組還是很圓滾的。
那麼,還有就是參數轉爲數組
function fn() {
var temp = [].slice.call(arguments);
console.log(temp);
}
fn(1,2,3,"a","se");
也是那麼的圓滾,記住 參數中的字符串要用引號引起來 這一點就好了!
第二大專題
JSON.stringify(); 把對象字符化 和 JSON.parse(); 把字符對象化
之所以要將對象字符化,是因爲有些地方這會給你顯示一個[Object object],但你想讓他顯示對象內容就要將其字符化了。
比如:alert(obj); alert某對象時就會顯示[Object object]。
但當你 alert(JSON.stringify(obj)); 時,就會顯示對象裏面的 鍵值對 了。
JSON.parse(); 也是有嚴格的語法要求!!!注意了,有是一個坑。。一不小心掉進去都不知道爲毛會這樣
var str = '{"a":1,"b":2}';
語法要求: 整個字符串用 單引號,字符串裏面對象的 鍵 用雙引號