【问题标题】:How to get value of object in array?如何获取数组中对象的值?
【发布时间】:2019-10-01 02:07:25
【问题描述】:

我想获得所有价格的价值。

{
  id: "2019-03",
  "-Lc4HDzvL3DTd4aKsdis": {price: 1234, info: "salary", date: "01"}, 
  "-Lc9N5m0N_CJMlD7pa4m": {price: -1212, info: "food", date: "12"}, 
  "-LekFVB-I2jlSb-YHNll": {price: 300000, info: "Actual Expenditure", date: "13"}
}

【问题讨论】:

标签: arrays angular typescript key


【解决方案1】:

使用Object.values() 获取值并使用. 表示法获取价格

var a = {
  id: "2019-03",
  -Lc4HDzvL3DTd4aKsdis: {
    price: 1234,
    info: "salary",
    date: "01"
  },
  -Lc9N5m0N_CJMlD7pa4m: {
    price: -1212,
    info: "food",
    date: "12"
  },
  -LekFVB - I2jlSb - YHNll: {
    price: 300000,
    info: "Actual Expenditure",
    date: "13"
  }
}
Object.values(a).forEach(e => {typeof(e)=='object'?console.log(e.price):false})

【讨论】:

  • 对我来说几乎不需要修改。 Object.values(a).forEach(e => console.log(e['price']));
  • 有什么问题?
【解决方案2】:

您可以使用for..in 循环来执行此操作。

let obj = {id: "2019-03",
-Lc4HDzvL3DTd4aKsdis: {price: 1234, info: "salary", date: "01"}, 
-Lc9N5m0N_CJMlD7pa4m: {price: -1212, info: "food", date: "12"}, 
-LekFVB-I2jlSb-YHNll: {price: 300000, info: "Actual Expenditure", date: "13"}};

for(let key in obj) { 
  if (obj[key].price) { 
     // do whatever you want with the price here
     console.log(obj[key].price); 
  } 
}

【讨论】:

    【解决方案3】:

    试试

    Object.keys(d).filter(x=>x!='id').map(x=>d[x].price);
    

    let d= {id: "2019-03",
    "-Lc4HDzvL3DTd4aKsdis": {price: 1234, info: "salary", date: "01"}, 
    "-Lc9N5m0N_CJMlD7pa4m": {price: -1212, info: "food", date: "12"}, 
    "-LekFVB-I2jlSb-YHNll": {price: 300000, info: "Actual Expenditure", date: "13"}}
    
    let r = Object.keys(d).filter(x=>x!='id').map(x=>d[x].price);
    
    console.log(r);

    【讨论】:

      【解决方案4】:

      试试这个解决方案:

      let obj = {
            id: "2019-03",
            -Lc4HDzvL3DTd4aKsdis: {
              price: 1234,
              info: "salary",
              date: "01"
            },
            -Lc9N5m0N_CJMlD7pa4m: {
              price: -1212,
              info: "food",
              date: "12"
            },
            -LekFVB - I2jlSb - YHNll: {
              price: 300000,
              info: "Actual Expenditure",
              date: "13"
            }
          }
      
          Object.keys(obj).filter(value=>value!='id').map(value=>obj[value].price);
      

      【讨论】:

        【解决方案5】:

        下面的代码会过滤掉 result 数组中的价格

        let obj = {
            id: "2019-03",
            "-Lc4HDzvL3DTd4aKsdis": {price: 1234, info: "salary", date: "01"}, 
            "-Lc9N5m0N_CJMlD7pa4m": {price: -1212, info: "food", date: "12"}, 
            "-LekFVB-I2jlSb-YHNll": {price: 300000, info: "Actual Expenditure", date: "13"}
        };
        
        let result = Object.keys(obj).map((item)=>{
            if(obj[item] && obj[item]['price']){
                return obj[item]['price'];  
            }
        }).filter(item=>item);
        
        console.log(result);
        

        【讨论】:

          猜你喜欢
          • 2020-04-20
          • 1970-01-01
          • 2017-09-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多