Как удалить ключи с пустыми значениями в массиве объектов в TypeScript? - PullRequest
1 голос
/ 06 ноября 2019

Я пытаюсь написать функцию в своем проекте Angular 8. У меня есть массив объектов и я хочу удалить все пары ключ: значение, где значение пусто. В интернете много примеров, но ни один из них мне не подходит.

Что у меня есть:

{
        "flightID": "FooID",
        "direction": "DownFoo",
        "msgType": "FooType",
        "elemNb": "",
        "msgID": "",
    },
    {
        "flightID": "FooID2",
        "direction": "UpFoo",
        "msgType": "FooType2",
        "elemNb": "",
        "msgID": "",
    },

Что я хочу:

    {
        "flightID": "FooID",
        "direction": "DownFoo",
        "msgType": "FooType",
    },
    {
        "flightID": "FooID2",
        "direction": "UpFoo",
        "msgType": "FooType2",
    },

Мойпопытка:

myList: any[]

 removeEmptyValues() {
    if (this.myList) {

      this.myList.forEach((value) => {

        Object.keys(value).forEach((key) => {
          delete key[''];

        })
      })
    }
    console.log(this.myList);
  }

Я ожидаю, что delete key[''] удалит ключ, если значение будет пустым, но оно ничего не делает. Как я могу удалить ключ, если значение пустое?

Ответы [ 4 ]

2 голосов
/ 06 ноября 2019

Попробуйте удалить значение [ключ] вместо ключа ['']

if (value[key] === '') {
  delete value[key];
}
1 голос
/ 06 ноября 2019

var list = [{
        "flightID": "FooID",
        "direction": "DownFoo",
        "msgType": "FooType",
        "elemNb": "",
        "msgID": "",
    },
    {
        "flightID": "FooID2",
        "direction": "UpFoo",
        "msgType": "FooType2",
        "elemNb": "",
        "msgID": "",
}];

let result = Array.from(list, o=> Object.fromEntries(Object.entries(o).filter((i) => i[1] != (null || ''))));

console.log(result);
var list = [{
        "flightID": "FooID",
        "direction": "DownFoo",
        "msgType": "FooType",
        "elemNb": "",
        "msgID": "",
    },
    {
        "flightID": "FooID2",
        "direction": "UpFoo",
        "msgType": "FooType2",
        "elemNb": "",
        "msgID": "",
}];

let result = Array.from(list, o=> Object.fromEntries(Object.entries(o).filter((i) => i[1] != (null || ''))));

console.log(result);
0 голосов
/ 06 ноября 2019

Вы должны проверить, является ли значение пустым, и удалить ключ. Они ниже код.

myList: any[]

removeEmptyValues() {
  if (this.myList) {

    this.myList.forEach((value) => {

      Object.keys(value).forEach((key) => {
        if(!value[key]) delete value[key];
      })
    })
  }
  console.log(this.myList);
}
0 голосов
/ 06 ноября 2019

Вы должны удалить ключ от объекта

myList: any[]

 removeEmptyValues() {
    if (this.myList) {

      this.myList.forEach((value) => {

        Object.keys(value).forEach((key) => {
          delete this.myList[key]

        })
      })
    }
    console.log(this.myList);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...