Javascript 按关键帧过滤对象,然后将其展平为数组
我想通过一个对象的关键点过滤它,然后将其展平到一个数组,因此我最终得到以下代码:Javascript 按关键帧过滤对象,然后将其展平为数组,javascript,Javascript,我想通过一个对象的关键点过滤它,然后将其展平到一个数组,因此我最终得到以下代码: Object.keys( Object.keys(x) .filter((key) => allowed.includes(key)) .reduce((obj, key) => { obj[key] = x[key]; return obj; }, {}) ).reduce( (r, k) => r.concat(k, ch
Object.keys(
Object.keys(x)
.filter((key) => allowed.includes(key))
.reduce((obj, key) => {
obj[key] = x[key];
return obj;
}, {})
).reduce(
(r, k) => r.concat(k, choices[k]), []
);
有没有其他方法可以不调用Object.keys两次就完成此操作
提前谢谢
#编辑:
很抱歉没有提供数据,我忘了说我也希望对数据进行排序
例如,我想要这个:
{
"b": [
"b1",
"b2",
"b3"
],
"v": [
"v1",
"v2",
"v3"
],
"a": [
"a1",
"a2",
"a3"
]
}
像这样:
["a", "a1", "a2", "a3", "b", "b1", "b2", "b3"]
允许的
是:[“a”,“b”]
这就是你的意思吗
Array.from(Object.entries(x).filter(x=>allowed.includes(x[0])).map(x=>x[1]));
// map "1" for values, "0" for keys or map {x[0]:x[1]}
// to return an array of objects representing the filtered key=>value pairs.
//where "x" is the object
这里还有一个代码笔测试:
除非您的数据中有非常奇怪的东西,否则以下代码完全没有必要:
Object.keys(x)
.filter((键)=>允许。包括(键))
.reduce((对象,键)=>{
obj[key]=x[key];
返回obj;
}, {})
它将获取对象x
,过滤其键,并使用过滤后的值创建一个新对象:
constx={a:1,b:2,c:3};
允许的常数=[“a”,“c”];
常量y=对象键(x)
.filter((键)=>允许。包括(键))
.reduce((对象,键)=>{
obj[key]=x[key];
返回obj;
}, {});
控制台日志(y);//{a:1,c:3}代码>请添加数据。向我们展示您的对象,以便我们看到您正在处理的内容。当然:((yourobj).filter(在这里完成您的工作))我甚至不认为需要第一次reduce
调用。您获取x
的键,对其进行过滤,然后使用x
中过滤的键及其值创建一个新对象,然后…再次获取其键?它与Object.keys(x).filter(/*仅允许*/).reduce((r,k)=>r.concat(k,choices[k]),[])不一样吗?
?感谢您的澄清:)