javascript - 在javascript中删除多个对象键值

标签 javascript arrays object

我想知道如何删除对象javascript中的多个键。 如何删除 obj 中的日期键。

var obj ={
  "id": "1",
  "cn": "TH",
  "curr": "THB",
  "10-02-2020": "10,11",
  "12-01-2019": "2,5"
}

var result = filterkeys(obj,["id","cn","curr"]);

function filterkeys(obj,arr){
   arr.forEach(function(key) {
    delete !obj[key];
  });
  return obj;
}

预期输出:

{
  "id": "1",
  "cn": "TH",
  "curr": "THB"
}

最佳答案

您需要采取相反的方法 - 迭代对象的所有键,如果它不在 arr 中,则将其删除:

var obj ={
  "id": "1",
  "cn": "TH",
  "curr": "THB",
  "10-02-2020": "10,11",
  "12-01-2019": "2,5"
}

var result = filterkeys(obj,["id","cn","curr"]);

function filterkeys(obj,arr){
  for (const key of Object.keys(obj)) {
    if (!arr.includes(key)) {
      delete obj[key];
    }
  }
  return obj;
}

console.log(result);

或者,没有delete(可能的话最好避免delete - 避免突变是很好的) - 映射键数组以使用构造一个新对象Object.fromEntries:

var obj ={
  "id": "1",
  "cn": "TH",
  "curr": "THB",
  "10-02-2020": "10,11",
  "12-01-2019": "2,5"
};
const filterkeys = (obj,arr) => Object.fromEntries(
  arr.map(key => [key, obj[key]])
);

var result = filterkeys(obj,["id","cn","curr"]);

console.log(result);

关于javascript - 在javascript中删除多个对象键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60482408/

相关文章:

javascript - React - 复选框第一次返回未定义的值

python - 确定 numpy 数组是否为 datetime64 的最佳方法?

javascript - 使用多维数组 javascript 中的数据填充表的列

java - 如何在Java中向一个JFrame添加2个或更多对象?

c++ - 如何将动态对象数组传递给另一个类的参数化构造函数?

javascript - 使用变量动态访问对象属性

javascript - 使用点符号字符串访问对象子属性

javascript - 如何使用嵌套协程和 Promise 来简化 JS 代码?

arrays - Swift:将字节从数组复制到数组

javascript - 乘法时奇怪的 JavaScript 输出