【发布时间】:2020-06-18 05:06:33
【问题描述】:
我正在拉入一个对象,当我执行 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() 的情况下将原始对象转换为数组?我已经为此工作了两天,似乎没有取得太大进展。蒂亚!
【问题讨论】:
-
这是一个无效的js对象
-
请添加有效数据和想要的结果,不仅仅是你得到的原因。
-
Ele 提到这不是一个有效的对象
-
我看这个太久了!我很抱歉;我相应地更新了我的问题。
标签: javascript arrays