【问题标题】:Remove json object key value using angular使用角度删除json对象键值
【发布时间】:2018-05-18 08:36:57
【问题描述】:

我有 json 响应,我想从中删除几个对象键值并将编辑后的响应存储在其他部分,以便我可以再次使用。

我知道使用简单的 javascript,但我对 angularjs 没有任何想法。

Json 响应

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

有什么方法可以实现吗?

【问题讨论】:

  • 这个和angularJS无关,可以用Javascript。使用Object.delete 或其他方式
  • Angular 对此没有特定的方法。除了 angular.forEach。你必须使用 vanilla js。
  • @ShashankVivek 我知道了,但它有一些事情要做,因为我想在加载控制器之前从服务加载数据时将其过滤掉。尝试使用 object.delete 没有成功。
  • @Lorenz 的回答会对你有所帮助。如果您需要更多解释,请告诉我们

标签: javascript angularjs json


【解决方案1】:

你不需要一些神奇的角度的东西。你可以只使用普通的旧 JavaScript。 我的方法遍历ABC 数组中的所有项目和deletes 在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);

【讨论】:

  • 我在我的代码props.forEach(prop => { $scope.list.ABC.forEach(ABC=> { delete ABC[props]; }); 中尝试了这部分,它显示错误:- typeError: Cannot read property 'forEach' of undefined at props.forEach.prop
  • 您应该注意要删除哪些变量。您想删除在props 中声明的所有变量,由forEach 迭代,并指定名称prop。所以你想要像props.forEach(prop => { $scope.list.ABC.forEach(abc=> { delete abc[prop]; }); 这样的东西。注意:delete abc[prop]不是 delete abc[props]。如果这不起作用,您介意给我们一个完整的代码示例吗?
【解决方案2】:

试试这个

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)

【讨论】:

  • 让我试试这个。
【解决方案3】:

其他解决方案的替代方案。 如果我们有一个名为 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 2018-03-17
    • 2013-09-28
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2023-03-30
    • 2014-07-18
    相关资源
    最近更新 更多