Javascript:过滤器对象返回正确的值但结构错误

时间:2021-01-10 18:51:23

标签: javascript

我有一个要过滤的对象,并且只返回 salesPersonID = "1" 的对象

var jsonData = {
    "a": {
        "id": "a",
        "name": "Lucifer Enterprises",
        "salesPersonId": "1"
    },
    "b": {
        "id": "b",
        "name": "Charlies Chocolate Factory",
        "salesPersonId": "1"
    },
    "c": {
        "id": "c",
        "name": "Geckos Investments",
        "salesPersonId": "2"
    }
};

预期输出:

var jsonDataFiltered = {
    "a": {
        "id": "a",
        "name": "Lucifer Enterprises",
        "salesPersonId": "1"
    },
    "b": {
        "id": "b",
        "name": "Charlies Chocolate Factory",
        "salesPersonId": "1"
    }
};

我的尝试

  1. 直接在对象上使用过滤器会导致 Uncaught TypeError: jsonData.filter is not a function
      var filteredJsonData = jsonData.filter(function (row){
        console.log("test");
      });
  1. 使用返回 a 和 b 但结构不同的对象条目和过滤器,这将成为我使用对象的问题。
      var filteredJsonData = Object.entries(jsonData).filter(function (entry){
        return entry[1].salesPersonId == "1";
      });

测试 2 的输出具有正确的值但结构错误:

[ 
   [ "a", { "id": "a", "name": "Lucifer Enterprises", "salesPersonId": "1" } ], 
   [ "b", { "id": "b", "name": "Charlies Chocolate Factory", "salesPersonId": "1" } ] 
]

问题

如何获得所需的输出?

1 个答案:

答案 0 :(得分:2)

您可以使用Object.fromEntries

var jsonData = {
    "a": {
        "id": "a",
        "name": "Lucifer Enterprises",
        "salesPersonId": "1"
    },
    "b": {
        "id": "b",
        "name": "Charlies Chocolate Factory",
        "salesPersonId": "1"
    },
    "c": {
        "id": "c",
        "name": "Geckos Investments",
        "salesPersonId": "2"
    }
};

var filteredJsonData = Object.fromEntries(Object.entries(jsonData).filter(function (entry){
  return entry[1].salesPersonId == "1";
}));

console.log(filteredJsonData);

相关问题