удалить значение ключа нескольких объектов в javascript - PullRequest
2 голосов
/ 02 марта 2020

Я хотел бы знать, как удалить несколько ключей в объекте javascript. как убрать ключи даты в объекте.

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"
}

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

Вам нужно go наоборот - перебрать все ключи объекта, а если его нет в 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);
0 голосов
/ 02 марта 2020

Используйте Object.assign и добавьте записи по необходимой карте keys.
В качестве альтернативы вы можете использовать Reflect.deleteProperty для удаления ненужных ключей.

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

const filterkeys = (obj, keys) =>
  Object.assign({}, ...keys.map(key => ({ [key]: obj[key] })));

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

console.log(result);

const filterkeys2 = (obj, keys) => {
  Object.keys(obj).forEach(key => !keys.includes(key) && Reflect.deleteProperty(obj, key))
  return obj;
};
var result2 = filterkeys2(obj,["id","cn","curr"]);
console.log(result2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...