Удалите значение ключа объекта json, используя угловой - PullRequest
0 голосов
/ 18 мая 2018

У меня есть ответ json, и я хочу удалить из него несколько значений ключа объекта и сохранить отредактированный ответ в другой части, чтобы я мог использовать его снова.

Я знаю, используя простой javascript, но я не имею никакого представления о angularjs.

Json response

{
    "$id": "1",
    "XYZ": [],
    "ABC": [
        {
            "$id": "41",
            "ID": 1,
            "Order": 0,
            "Delay": 0,
            "Name": "abc",
            "Count": "9",
            "Storage": 3,
            "Groups": []
        }
    ],
    "Projected": 2019
}

Теперь из этого файла Json я хочу отфильтровать

"$id": "41", "ID": 1, "Order": 0, "Delay": 0, "Groups": [], "Name": "abc"

Итак, моя новая структура json будет такой, которую я хочу сохранить:

{
    "$id": "1",
    "XYZ": [],
    "ABC": [
        {
            "Count": "9",
            "Storage": 3
        }
    ],
    "Projected": 2019
}

Любой способ достижения?

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Вам не нужны магические угловатые вещи.Вы можете просто использовать старый добрый JavaScript.Мой apporach перебирает все элементы в массиве ABC и delete s все свойства, определенные в массиве props.Обратите внимание, что это активно изменяет элементы массива ABC.

const obj = {
    "$id": "1",
    "XYZ": [],
    "ABC": [
        {
            "$id": "41",
            "ID": 1,
            "Order": 0,
            "Delay": 0,
            "Name": "abc",
            "Count": "9",
            "Storage": 3,
            "Groups": []
        }
    ],
    "Projected": 2019
}

// Now from this Json file I want to filter out

const props = ["$id", "ID", "Order", "Delay", "Groups", "Name"];
props.forEach(prop => {
    obj.ABC.forEach(abc => {
      delete abc[prop];
    });
});

console.log(obj);
0 голосов
/ 18 мая 2018

Альтернатива другим решениям.Если у нас есть переменная с именем json.Этот метод прост

let len = json.ABC.length;
for (let i=0;i<len;i++){
    delete json.ABC[i].$id;
    delete json.ABC[i].ID;
    delete json.ABC[i].Order;
    delete json.ABC[i].Delay;
    delete json.ABC[i].Groups;
    delete json.ABC[i].Name;
}
0 голосов
/ 18 мая 2018

попробуйте

let json = {
    "$id": "1",
    "XYZ": [],
    "ABC": [
        {
            "$id": "41",
            "ID": 1,
            "Order": 0,
            "Delay": 0,
            "Name": "abc",
            "Count": "9",
            "Storage": 3,
            "Groups": []
        }
    ],
    "Projected": 2019
};

json["ABC"] = json["ABC"].map(obj => ({
  "Count": obj["Count"],
  "Storage": obj["Storage"]
}));
// or dynamic way
let keepkeys = ["Storage", "Count"];
json["ABC"] = json["ABC"].map(obj => {
  let newObj = {};
   keepkeys.forEach(key => newObj[key] = obj[key]);
  return newObj;
});
console.log(json)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...