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

时间:2018-05-11 17:22:07

标签: javascript object stack literals splice

嘿所有我想删除对象中的一些项目:

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

但是,这似乎不会删除项目环境正弦#1 bomDescription #0

我也尝试过:

  

f] [0] .pop()

     

j.data [0] .pop()

     

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

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