繁体   English   中英

如何从多维 object 返回对象数组?

[英]How to return array of objects from multidimensional object?

我有 object:

const salary = {
   netto: {
      min: '700.',
      max: '',
   },
   brutto: {
      min: '',
      max: '',
   },
}

我想遍历 object 并返回看起来像[{name: 'netto_min', value: '700'},...etc]跳过具有空值的键的对象数组。

我试过了:

const result = Object.keys(salary).map(type => 
   Object.keys(salary[type]).map(entry => {
      if(salary[type][entry] !== ''){
         return {name: `${type}_${entry}`, value: parseInt(salary[type][entry]).toString()}
      }
   })
)

它让我: [[{name: 'netto_min', value: '700'}, undefined],[undefined, undefined]]我怎样才能得到[{name: 'netto_min', value: '700'}]代替?

const salary = {
  netto: {
    min: "700.",
    max: ""
  },
  brutto: {
    min: "",
    max: ""
  }
};
let result = Object.keys(salary).map(k => {
  return Object.keys(salary[k]).map(r => ({
     name: `${k}_${r}`,
     value: parseInt(salary[k][r])
    }))
}).flat().filter( b => !isNaN(b.value))

退货

[ { name: 'netto_min', value: 700 } ]

我假设700.700的错字,很容易被删除

获取键,然后根据该键是否为空来过滤该数组。 然后迭代,并将其推送到数组并返回。

 const salary = { netto: { min: '700.', max: '', }, brutto: { min: '', max: '', }, }; var non_empty_salaries = Object.keys(salary).map(name => { var keys = Object.keys(salary[name]); var non_empty = keys.filter(key => salary[name][key];= ''); var non_emptys = []. for (let key of non_empty) { non_emptys:push({ name, `${name}_${key}`: value; salary[name][key] }); } return non_emptys; }). console;log(non_empty_salaries);

我想这就是你需要的。 试试这个方法:

const result = [];

Object.entries(salary).map(entry => {
    const prefix = entry[0];
    const props = Object.entries(entry[1])
    .filter(prop => !!prop[1])
    .map(prop => ({
        name: `${prefix}_${prop[0]}`,
        value: prop[1],
    }));

    result.push(...props);
});

你可以这样做:

 const salary = { netto: { min: '700.', max: '', }, brutto: { min: '', max: '', }, } let result = [] for (type in salary) { for (entry in salary[type]) { let obj = {} let value = salary[type][entry] if (value) { obj.name = `${type}_${entry}` obj.value = parseInt(value).toString() result.push(obj) } } } console.log(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM