Как я могу динамически удалить оператор распространения из объекта JavaScript - PullRequest
0 голосов
/ 05 августа 2020

На самом деле, я хочу динамически удалить оператор распространения или фильтр последней записи из объекта params.

const params = {
                    name: query.name,
                    age: query.age,
                    gender: query.gender
                    ...filter,
}

const condition = true;
      
if (condition) {
  //remove    ...filter
  delete  params.filter //does not work
}

Ускоренный вывод после применения условия,

console.log(params)

 {
      name: query.name,
      age: query.age,
      gender: query.gender    
}

Ответы [ 3 ]

3 голосов
/ 05 августа 2020

Просто поместите условие в спред:

const params = {
        name: query.name,
        age: query.age,
        gender: query.gender,
        ...(condition && filter),
}
2 голосов
/ 05 августа 2020

Вы можете использовать Object.keys для перечисления ключей объекта фильтра и удаления из объекта params.

const query = {
  name: 'foo',
  age: 42,
  gender: 'unknown'
}
const filter = {
  bar: 'baz'
}

const params = {
  name: query.name,
  age: query.age,
  gender: query.gender,
  ...filter,
}

const condition = true;

if (condition) {
  //remove    ...filter
  Object.keys(filter).forEach(k => {
      delete params[k]
  })
}

console.log(params)
0 голосов
/ 05 августа 2020

Получение последнего элемента в объекте javascript

 var lastElement =  params[Object.keys(params)[Object.keys(params).length - 1]] 
 // "filter"

Теперь удалите последний элемент из объекта

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