Удалить пустой элемент из массива

Все объекты гарантированно имеют метод .equals(), поскольку Object содержит метод, .equals(), который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. С помощью ==) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals() и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.

Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==, это был бы прекрасный способ. Строки сами не делают.

1
задан hevans900 17 January 2019 в 11:55
поделиться

4 ответа

Вы хотите знать, является ли объект пустым, кроме свойства _id, поэтому вы можете сделать что-то вроде этого:

res.ABC.filter(obj => {
  const keys = Object.keys(obj);
  return (keys.length !== 1  || keys[0] !== '_id') && keys.length !== 0;
});
0
ответ дан Cristian Traìna 17 January 2019 в 11:55
поделиться

Вы можете использовать фильтр массива:

this.abcArray = res.ABC.filter(result => result.a && result.b && result.c);
0
ответ дан Louis R 17 January 2019 в 11:55
поделиться

Вам нужно использовать метод фильтра в вашем массиве, если вы хотите сделать это после того, как у вас есть данные:

this.abcArray.filter(item => ...your predicate to say an item is non-empty...)

Если вы можете контролировать, когда элементы толкнул или нет, почему бы тебе просто не толкнуть их только тогда, когда ты знаешь, что они не пустые?

if (... your predicate non empty ...)
  this.abcArray.push(res)
0
ответ дан Mic 17 January 2019 в 11:55
поделиться

Вы можете использовать метод фильтра и массив фильтров на основе количества свойств в каждом элементе следующим образом

this.abcService.addabc(ABC).subscribe(
    res => {
        let res1 = res.filter(i=>Object.keys(i.ABC_Info.ABC).length >1);
        this.abcArray.push(res1); //abcArray is a array. Before Pushing  I want to check for empty element and remove before pushing

    },
    error => console.log(error)
);
}

фильтровать элемент массива без какого-либо свойства, такого как _id, которое вы можете использовать

res.filter(i=>Object.keys(i.ABC_Info.ABC).length >0); 
0
ответ дан sreejithsdev 17 January 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: