其實取這個名字可能不太符合實際,畢竟沒有「一系列」╮(╯_╰)╭
問題引發是牛客網上js的陣列去重程式設計題,
先放乙個正確版本的**:
array.prototype.uniq = function
(),第一次出現的值
if(arr[i] != arr[i])
}else
}
}return newarr;
}
嘛,本來事情到這裡ac通過了就沒有之後的下文了,不過因為某些原因,我去嘗試另外一種方法:
array.prototype.uniq = function
(); for(var i = 0;i < arr.length; i++)
if(obj.hasownproperty(arr[i]))
obj[arr[i]] = arr[i];
newarr.push(arr[i]);
}return newarr;
}
遺憾的是,這段**沒有ac通過,當時怎麼想都沒想出來,網上也求助了很多人,明白了一些漏考慮的例子:
比如說引用相同的物件
(有點忘了)…
但是把這些加上去還是只通過50%。。。。
然後,重點來了!
[1,'1',null,undefined,nan,false,true,{},,function
(){},'nan','false'].uniq();
的結果正確的應該是
[1,'1',null,undefined,nan,false,true,{},,function
(){},'nan','false'],
而我的是
[1,'1',null,undefined,nan,false,true,{},,function
(){}]
******************************====
這個的原因應該是
物件設定屬性的時候會將屬性名轉成字串
var arr = [1,'1',null,undefined,nan,false,true,{},,function
(){}];
arr.foreach(function
(item,index));
//結果object
由此,聯想是不是它自動使用tostring()
轉化,又測試:
arr.foreach(function
(item,index)
)//結果 報錯vm554:
1 uncaught typeerror: cannot read
property
'tostring'
of null(…)
結果報錯了,undefined,null,沒有tostring()方法,又想是不是用了valueof (),仍舊報錯。。。。o(╯□╰)o
***************==
後來找了度娘檢視tostring()的情況。。。揭秘:
其實這裡應該是用了強制型別轉化,string()
w3c上面有解釋:
關於強制型別轉化,w3c上有簡要的解釋:
well , that』s all……
DROP TRUNCATE分割槽引發的一系列問題
生產的分片資料庫innodb buffer pool reads偏高 某個開發dba指出buffer pool記憶體裡的資料和實際占用磁碟空間應是一致的,也就是varchar n 欄位在buffer pool中也僅占用n個位元組 drop和truncate分割槽期間,查詢掛起在opening tab...
mac安裝numpy引發的一系列問題
在安裝numpy和matplotlib過程中,直接提示 numpy requires system python 2.7 to install 但是mac電腦自帶的python本身是2.7,在stackoverflow上找到一篇文章 mac安裝matplotlib的步驟 然後寫了下面這段簡單的 測試...
關於一系列的f函式
fopen 函式的使用 fopen 檔名 選擇方式 選擇方式有常見的兩種 r 關於r,開啟乙個已存在的文字檔案,只能從中讀取資料 w 關於w,開啟或新建乙個文字檔案,只能寫入資料,若檔案已存在則覆蓋原全部內容 廢話不多說,直接上 讀取乙個建立過的文件內容 include int main print...