Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象筛选某些值_Javascript_Object - Fatal编程技术网

Javascript 对象筛选某些值

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":

我有一个JSON对象:

{
    "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)