Javascript удаляет литеральные объекты объекта внутри цикла - PullRequest
0 голосов
/ 11 мая 2018

Привет всем, что я пытаюсь удалить несколько объектов внутри моего объекта:

if (e = j[a].apply(j, g), e !== c && e !== j)
    $.each(j.data[0], function (key, value) {
       console.log(key, value);
       j.data.splice(1, 1);
    });

return h = e, !1

enter image description here

Однако, похоже, это не удаляетitem environment синус, то есть # 1 и bomDescription is # 0 .

Я также пробовал:

j [0] .pop ()

j.data [0] .pop ()

j.data [0] .splice (1, 1)

Какие из перечисленных выше работают или вызывают ошибку.

Что я делаю неправильно?

1 Ответ

0 голосов
/ 11 мая 2018

Если ваш объект выглядит примерно так (как может показаться на этом изображении).

const j = {
  data: {
    bomDescription: "hjtyj",
    environment: 2,
    ...
  }
}

Затем, чтобы удалить свойство environment, вы можете использовать оператор delete, подобный этому.

const j = {
  data: {
    bomDescription: "hjtyj",
    environment: 2
  }
}

console.log(j.data);
delete j.data.environment;
console.log(j.data);

РЕДАКТИРОВАТЬ

Чтобы удалить свойство на основе его значения, вы можете сделать это.

const j = {
  data: {
    bomDescription: "hjtyj",
    environment: 2
  }
}

const removePropertyByValue = (obj, value) => {
  for (const prop in obj) {
    if (obj.hasOwnProperty(prop) && obj[prop] === value) {
      delete obj[prop];
    }
  }
}

console.log(j.data);
removePropertyByValue(j.data, 2);
console.log(j.data);

РЕДАКТИРОВАТЬ II

Если свойство данных представляет собой массив объектов, вы можете сделать это.

const j = {
  data: [{
    bomDescription: "hjtyj",
    environment: 2
  }]
}

const removePropertyByValue = (obj, value) => {
  for (const prop in obj) {
    if (obj.hasOwnProperty(prop) && obj[prop] === value) {
      delete obj[prop];
    }
  }
}

console.log(j.data[0]);
removePropertyByValue(j.data[0], 2);
console.log(j.data[0]);
...