Javascript 对象筛选某些值
我有一个JSON对象:Javascript 对象筛选某些值,javascript,object,Javascript,Object,我有一个JSON对象: { "active": 0, "0": "active", "inactive": 1, "1": "inactive", "ineligable": 2, "2": "ineligable", "error": 3, "3": "error", "suspended": 4, "4":
{
"active": 0,
"0": "active",
"inactive": 1,
"1": "inactive",
"ineligable": 2,
"2": "ineligable",
"error": 3,
"3": "error",
"suspended": 4,
"4": "suspended",
"archived": 5,
"5": "archived",
"removed": 6,
"6": "removed"
}
我想用一个数值来过滤那些。问题是我已经做到了。但是用一种非常丑陋的方式,我想知道是否有比我做的更好的方式来过滤对象
以下是我的尝试:
const statuses = listingstatus; //this is the object
let toFill = [];
Object.keys(statuses).forEach(key => {
if(Number.isInteger(statuses[key])){
toFill.push({[key]: statuses[key]});
};
});
console.log(toFill)
结果是:
数组:
0: {active: 0}
1: {inactive: 1}
2: {ineligable: 2}
3: {error: 3}
4: {suspended: 4}
5: {archived: 5}
6: {removed: 6}
试试这个,我用过并且:
const obj={
“活动”:0,
“0”:“活动”,
“不活跃”:1,
“1”:“不活动”,
“不合格”:2,
“2”:“不合格”,
"错误":三,,
“3”:“错误”,
“暂停”:4,
“4”:“暂停”,
“存档”:5,
“5”:“存档”,
“删除”:6,
“6”:“已删除”
};
const output=Object.keys(obj).reduce((acc,k)=>Number.isInteger(obj[k])?(acc.push({[k]:obj[k]}),acc):acc,[]);
控制台日志(输出)代码>试试这个,我已经用过了:
const obj={
“活动”:0,
“0”:“活动”,
“不活跃”:1,
“1”:“不活动”,
“不合格”:2,
“2”:“不合格”,
"错误":三,,
“3”:“错误”,
“暂停”:4,
“4”:“暂停”,
“存档”:5,
“5”:“存档”,
“删除”:6,
“6”:“已删除”
};
const output=Object.keys(obj).reduce((acc,k)=>Number.isInteger(obj[k])?(acc.push({[k]:obj[k]}),acc):acc,[]);
控制台日志(输出)
为了仍然满足您的要求,您可以使用Object.entries
而不是Object.keys
来简化它,并使用Object将结果简化为单个值。reduce
而不是在必要时迭代并推到另一个变量上
const状态={
“活动”:0,
“0”:“活动”,
“不活跃”:1,
“1”:“不活动”,
“不合格”:2,
“2”:“不合格”,
"错误":三,,
“3”:“错误”,
“暂停”:4,
“4”:“暂停”,
“存档”:5,
“5”:“存档”,
“删除”:6,
“6”:“已删除”
}
const toFill=Object.entries(status).reduce((all,[key,value])=>Number.isInteger(value)?[…all,{[key]:value}]:all,[]);
console.log(toFill)
为了仍然满足您的需求,您可以使用对象。条目
而不是对象。键
来简化它,并使用对象将结果减少为单个值。减少
而不是在必要时迭代和推到另一个变量上
const状态={
“活动”:0,
“0”:“活动”,
“不活跃”:1,
“1”:“不活动”,
“不合格”:2,
“2”:“不合格”,
"错误":三,,
“3”:“错误”,
“暂停”:4,
“4”:“暂停”,
“存档”:5,
“5”:“存档”,
“删除”:6,
“6”:“已删除”
}
const toFill=Object.entries(status).reduce((all,[key,value])=>Number.isInteger(value)?[…all,{[key]:value}]:all,[]);
console.log(toFill)
您可以通过以下方式进行尝试:
您可以这样尝试:
这会改变可能不需要的原始对象这会改变可能不需要的原始对象
const statuses = listingstatus
Object.keys(statuses).forEach(key => {
if (isNaN(statuses[key])) delete statuses[key];
});
console.log(statuses)