Javascript 删除循环内的对象文字项

Javascript deleting object literal item(s) inside loop

嘿,我正在尝试删除对象中的一些项目:

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

但是,这似乎并没有删除项目 environment 正弦,即 #1bomDescription#0.

我也试过:

j[0].pop()

j.data[0].pop()

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

以上哪项不可行或导致错误。

我做错了什么?

如果您的对象看起来像这样(从该图像看起来)。

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);

编辑二

如果数据 属性 是一个对象数组,那么您可以这样做。

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]);