首页 > 解决方案 > 在javascript中删除多个对象键值

问题描述

我想知道如何删除对象 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"
}

标签: javascriptarraysobject

解决方案


您需要反过来 - 遍历对象的所有键,如果它不在 中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);

或者,没有deletedelete如果可能的话最好避免 - 最好避免突变) - 映射键数组以构造一个新对象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);


推荐阅读