首页 > 解决方案 > Javascript删除循环内的对象文字项

问题描述

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

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

在此处输入图像描述

但是,这似乎并没有删除项目环境正弦#1bomDescription#0

我也试过:

j[0].pop()

j.data[0].pop()

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

以上哪一项不工作或导致错误。

我做错了什么?

标签: javascriptobjectstackliteralssplice

解决方案


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

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

编辑二

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


推荐阅读