【发布时间】:2018-08-01 02:37:34
【问题描述】:
我有一个看起来像这样的 JS 对象:
{
"3": {
"id": 3,
"first": "Lisa",
"last": "Morgan",
"email": "lmorgan@gmail.com",
"phone": "(508) 233-8908",
"status": 0
},
"4": {
"id": 4,
"first": "Dave",
"last": "Hart",
"email": "dhart@gmail.com",
"phone": "(509) 874-9411",
"status": 1
}
}
我想过滤对象,例如只提取状态为“1”的记录。一种解决方案是使用这样的数组过滤器:
var filterJSON = Object.values(obj).filter(function (entry) {
switch(frmFilter){
case '1':
return entry.status === 1;
break;
case '2':
return entry.status === 0;
break;
default:
return entry;
}
});
问题是上面的代码会将数据转换成这样的数组:
[
{
"id": 3,
"first": "Lisa",
"last": "Morgan",
"email": "lmorgan@gmail.com",
"phone": "(508) 233-8908",
"status": 1
},
{
"id": 4,
"first": "Dave",
"last": "Hart",
"email": "dhart@gmail.com",
"phone": "(509) 874-9411",
"status": 1
}
]
如您所见,数据集是一个数组,我想在应用过滤器之前将对象中的数据保持与第一个示例中的数据相同。有没有办法通过对象过滤并获得与通过数组过滤相同的输出?
【问题讨论】:
-
for...in循环帮助吗? -
@samuellawrentz 也许,我不确定你的建议是什么。
标签: javascript arrays json filter jsobject