我在存储在变量keyData
中的形式的JS对象:
{type: "", label: "fname", title: "first name", …}
defaultvalue: ""
disabled: false
label: "fname"
readonly: false
required: "on"
title: "first name"
type: ""
__proto__: Object
我想筛选这些键值对并返回一个新对象,其中包含键值对以及其中的可用数据。例如,在此数据中,它应仅返回标题,必填和标签。
有了这些新的过滤数据,我想映射一个以过滤键作为输入类型,过滤值作为其值的反应形式。
我对如何解决这个问题感到困惑。我尝试使用 Object.entries(keyData) 像这样:
Object.entries(keyData).filter(x => console.log(x))
console.log(keyData)
在console.log(keyData)
上打印:
(2) ["type", ""]
(2) ["label", "fname"]
(2) ["title", "first name"]
(2) ["placeholder", ""]
(2) ["required", "on"]
(2) ["readonly", false]
(2) ["disabled", false]
我无法进一步过滤此空数据。
答案 0 :(得分:2)
一种选择是在使用reduce
之后使用Object.entries
。然后,只有在value
为真时,您才能返回对象。
const data = {
a: "foo",
b: false,
c: "bar",
d: null
};
const filtered = Object.entries(data).reduce((acc, [key, value]) => {
if (value) {
acc[key] = value;
}
return acc;
}, {});
console.log(filtered);
答案 1 :(得分:2)
您需要先使filter()
和reduce()
成为对象
Object.entries(keyData).filter((key, value) => value).reduce((prev, curr) => {
prev[curr[0]] = curr[1];
return prev;
}, {});