0
我有以下的javascript的console.log(陣列)返回空,但執行console.log(array.length)不返回0
var filtered = [];
$('#footballCheck').on('change', function() {
if ($('#footballCheck').is(':checked')) {
for (var i = 0; i < fa_names.length; i++) {
if (fa_names[i]["facility_activity"].toLowerCase().indexOf("football") >= 0) {
filtered.push(fa_names[i]);
}
}
filtered.sort(SortByName);
$('#mCSB_1_container').empty(".facility-name");
for (var k = 0; k < filtered.length; k++) {
$('#mCSB_1_container').append('<div class="row facility-name">\
<button class="btn btn-default btn-fill btn-menu" date-name="' + filtered[k]["facility_name"] + '">' + filtered[k]["facility_name"] + '</button></div>');
$('#facilities-body').mCustomScrollbar("update");
}
} else {
for (var j = 0; j < filtered.length; j++) {
if (filtered[j]["facility_activity"].toLowerCase().indexOf("football") >= 0) {
delete filtered[j];
}
}
console.log(filtered);
console.log(filtered.length);
if (filtered.length > 0) {
filtered.sort(SortByName);
$('#mCSB_1_container').empty(".facility-name");
for (var k = 0; k < filtered.length; k++) {
$('#mCSB_1_container').append('<div class="row facility-name">\
<button class="btn btn-default btn-fill btn-menu" date-name="' + filtered[k]["facility_name"] + '">' + filtered[k]["facility_name"] + '</button></div>');
$('#facilities-body').mCustomScrollbar("update");
}
} else {
$('#mCSB_1_container').empty(".facility-name");
for (k = 0; k < fa_names.length; k++) {
$('#mCSB_1_container').append('<div class="row facility-name">\
<button class="btn btn-default btn-fill btn-menu" date-name="' + fa_names[k]["facility_name"] + '">' + fa_names[k]["facility_name"] + '</button></div>');
$('#facilities-body').mCustomScrollbar("update");
}
}
}
});
認爲應該做到以下幾點:
- 如果複選框被選中,經過另一個數組並推動其鍵值的所有對象「facility_activity」包含「足球」到
filtered
陣列 - 如果未被選中,然後從
filtered
數組,其鍵值「facility_act刪除所有對象ivity」包含‘足球’ - 如果沒有選擇其長度爲> 0(意味着仍有過濾的對象)打印那些
- 如果沒有選擇和
filtered
數組爲空,然後追加從所有項目父數組(未過濾的數組)
這是fiddle。
背景:複選框充當搜索的過濾器,filtered
數組存儲這些過濾的值(除了那個小提琴filtered
數組被更改之外,沒有其他位置)。
我的問題是console.log(filtered)
返回[]
和console.log(filtered.length)
不會返回0
它應該。爲什麼會發生這種情況,我該如何解決?
您使用'delete'從數組中刪除元素,使用'splice'。 – Tushar
代碼**在**問題中,而不僅僅是鏈接。 –
如果您希望回覆有關重複的內容,請將其作爲評論,而不是將其添加到問題中。你是對的,另一個問題不是真的重複。但是,如果您立即發佈相關代碼,並且確保代碼是一個[最小示例](http://stackoverflow.com/help/mcve),可以準確地再現問題,那麼您會得到更好的接收。 – 2016-04-24 16:34:11