javascript - Object.entries() 将键转换为数组
问题描述
我正在拉入一个对象,当我执行 console.log() 时,它会以这种格式返回数据:
{PerformanceYear:
[{2020: "2020", checked: false}
{2019: "2019", checked: true}
{2018: "2018", checked: false}
{2017: "2017", checked: false}
],
Region:
[{1: "WA", checked: true}
{2: "OR", checked: false}
{3: "MT", checked: false}
{4: "Other", checked: false}
],
Service Area:
[{5: "Northwest", checked: false}
{6: "Southwest", checked: true}
{7: "Southeast", checked: true}
{8: "Other", checked: false}
],
}
(所以整个数据集是一个对象,而不是一个数组)
我正在尝试过滤,但这只能在数组上完成,所以我使用 Object.entries() 将其转换为数组。唯一的问题是 PerformanceYear、Region 和 Service Area 中的每一个也成为了它们自己独立的数组,所以当我尝试这个时:
var filtered = [];
for (var i = 0; i < entries.length; i++) {
for (var x = 0; x < entries[i][1].length; x++)
if (entries[i][1][x].checked === true) {
filtered.push(entries[i][1][x]);
}
}
console.log(filtered)
我明白了:
[{2019: "2019", checked: true},
{1: "WA", checked: true},
{6: "Southwest", checked: true},
{7: "Southeast", checked: true}
]
我想要得到的是:
[PerformanceYear: {2019: "2019", checked: true},
Region: {1: "WA", checked: true},
Service Area: {6: "Southwest", checked: true}, {7: "Southeast", checked:
true}
]
如果我尝试filtered.push(entries[i][1]),它不会过滤掉选中的=== false 值。有没有办法过滤原始对象而不将其转换为数组?或者有没有办法在不使用 array.entries() 的情况下将原始对象转换为数组?我已经为此工作了两天,似乎没有取得太大进展。蒂亚!
解决方案
假设您想保留外部键,您可以获取条目并过滤数组。
var data = { PerformanceYear: [{ 2020: "2020", checked: false }, { 2019: "2019", checked: true }, { 2018: "2018", checked: false }, { 2017: "2017", checked: false }], Region: [{ 1: "WA", checked: true }, { 2: "OR", checked: false }, { 3: "MT", checked: false }, { 4: "Other", checked: false }], ServiceArea: [{ 5: "Northwest", checked: false }, { 6: "Southwest", checked: true }, { 7: "Southeast", checked: true }, { 8: "Other", checked: false }] },
result = Object.fromEntries(Object
.entries(data)
.map(([k, a]) => [k, a.filter(({ checked }) => checked)])
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- javascript - 如何使列过滤在数据表服务器端处理中起作用?
- html - 用“粘性”制作一个可收缩的标题
- api - WSO2 EI - 如何在 API 中处理格式错误的 JSON 请求
- javascript - 如何避免 Facebook xfbml.customerchat.js 与 sdk.js 冲突?
- javascript - 如何从 WP REST API 获取 JSON 数据
- asp.net - ASP.NET 视图和 SPA 组合的身份验证方案
- javascript - 如何在添加新元素的同时替换空格?
- php - 如何将 2 个结果查询与 2 个 while 进行比较?
- javascript - Jasmine Angular 组件未定义
- java - 设置按钮背景和颜色