Javascript Удалить из массива, если он пуст - PullRequest
0 голосов
/ 05 марта 2019

У меня есть массив, похожий на этот:

var testArray = [
    {"cid": "1234567"},
    {"cid": "892345"},
    {"cid": ""},
    {"cid": "8267783"},
    {},
    {"cid": "096873"},
];

Как удалить, либо перед циклом for, либо при цикле, где cid = "" и где пусто {}

Я попробовал это:

for(var i = 0; testArray.length; i++){

    if(testArray.cid && testArray.cid != ""){

    }

}

Это не сработало: - / Получил эту ошибку: Невозможно прочитать свойство "cid" из неопределенного

Надеюсь, что это имеет смысл, и заранее спасибо: -)

Ответы [ 5 ]

0 голосов
/ 05 марта 2019

Только что добавлена ​​функция пост-фильтра для полноты. Голосуйте за HolyDragon tho.

var testArray = [
    {"cid": "1234567"},
    {"cid": "892345"},
    {"cid": ""},
    {"cid": "8267783"},
    {},
    {"cid": "096873"},
];

testArray.filter(i => i.cid)
         .forEach(elem => {
  // do my code post filter
  console.log(elem.cid);
});
0 голосов
/ 05 марта 2019

Если вам нужно удалить ВСЕ пустые значения ("", null, undefined и 0):

arr = arr.filter(function(e){return e}); 

Чтобы удалить пустые значения и разрывы строк:

arr = arr.filter(function(e){ return e.replace(/(\r\n|\n|\r)/gm,"")});

Пример

arr = ["hello","",null,undefined,1,100," "]  
arr.filter(function(e){return e});

возврат

["hello", 1, 100, " "]
0 голосов
/ 05 марта 2019

Когда вы будете использовать splice() во время цикла.Вам нужно уменьшить i на 1 Лучший способ сделать это, используя filter().Ниже я показал оба метода.
И для проверки пустого объекта {} вы должны сравнить Object.key(obj).length с 0

var testArray = [
    {"cid": "1234567"},
    {"cid": "892345"},
    {"cid": ""},
    {"cid": "8267783"},
    {},
    {"cid": "096873"},
];
//doesnot mutates the original array.
let result = testArray.filter(x => Object.keys(x).length !== 0 && x.cid !== '');

//original array will be change after this loop
for(let i = 0;i<testArray.length;i++){
  if(Object.keys(testArray[i]).length ===0 || testArray[i].cid === ''){
    testArray.splice(i,1);
    i--;
  }
}
console.log(testArray)
console.log(result);
0 голосов
/ 05 марта 2019

var testArray = [
    {"cid": "1234567"},
    {"cid": "892345"},
    {"cid": ""},
    {"cid": "8267783"},
    {},
    {"cid": "096873"},
];

testArray = testArray.filter(item=> Object.keys(item).length && item["cid"]);
console.log(testArray)
0 голосов
/ 05 марта 2019

Используйте filter () для фильтрации нежелательных данных.

var testArray = [
    {"cid": "1234567"},
    {"cid": "892345"},
    {"cid": ""},
    {"cid": "8267783"},
    {},
    {"cid": "096873"},
];
console.log(testArray.filter(arr => arr.cid))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...