因爲您正在向數組添加屬性。
var a = [];
a.foo = 42;
a.length === 0; // true
而是嘗試
emails.push(email);
這是一樣的emails[emails.length] = email
順便說一句:
var emails = new Array();
是壞的。您應該使用[]
而不是new Array()
,主要是因爲它更簡潔易讀。
if (email != '') {
上面可以用if (email) {
的情況下,jQuery的不斷返回undefined
或null
要使整個代碼更優雅代替你應該使用
var emails = $('.emailBox input').map(function() {
return this.value;
}).filter(function (k, v) { return v; }).get();
或者沒有jQuery的
var emails = [].map.call(document.querySelectorAll(".emailBox input"), function (v) {
return v.value;
}).filter(function (v) { return v; });
儘管您需要QSA墊片和ES5墊片以實現傳統平臺支持。
編輯:
如果你想在陣列是唯一的,然後酌減。
var arr = arr.reduce(function (memo, val, key, arr) {
// if the first index of the value is the index then add it.
// if the first index is different then we already have it.
if (arr.indexOf(val) === key) {
memo.push(val);
}
return memo;
}, []);
誰降低了這個數字?這是一個完全有效的問題(我upvoted回到零) –
非常感謝那 – cdub