代码之家  ›  专栏  ›  技术社区  ›  kockburn

realmjs对象上的object.values返回空数组

  •  3
  • kockburn  · 技术社区  · 6 年前

    说明

    我正在尝试将领域对象转换为数组,如下面的History方法所示。

    class RealmStore {
    
        @observable symptoms = {};
        @observable meals    = {};
    
        @computed get history(){
            return [...Object.values(this.symptoms), ...Object.values(this.meals)];
        }
    
        //More methods to populate this.symptoms and this.meals
    }
    

    当我登录时 this.symptoms 我在终端中得到以下输出:

    {
      '0': {
        date: Fri Jun 29 2018 15: 56: 48 GMT + 0200(CEST),
        name: 'Regurgitation',
        value: 1
      },
      '1': {
        date: Fri Jun 29 2018 15: 58: 09 GMT + 0200(CEST),
        name: 'Belching',
        value: 1
      },
      '2': {
        date: Fri Jun 29 2018 16: 10: 39 GMT + 0200(CEST),
        name: 'Heartburn',
        value: 2
      },
      '3': {
        date: Fri Jun 29 2018 23: 30: 36 GMT + 0200(CEST),
        name: 'Heartburn',
        value: 1
      }
    }
    

    当我登录时 Object.keys(this.symptoms) 我的终端上有以下信息:

    [ '0', '1', '2', '3' ]
    

    当我登录时 Object.values(this.symptoms) 我的终端上有以下信息:

    []
    

    这是唯一可行的方法:

            const values = [];
            for(let prop in this.symptoms){
                if(this.symptoms.hasOwnProperty(prop)){
                    values.push(this.symptoms[prop])
                }
            }
            console.log(values);
    

    这会在我的终端中记录以下内容:

    [{
        date: Fri Jun 29 2018 15: 56: 48 GMT + 0200(CEST),
        name: 'Regurgitation',
        value: 1
      },
      {
        date: Fri Jun 29 2018 15: 58: 09 GMT + 0200(CEST),
        name: 'Belching',
        value: 1
      },
      {
        date: Fri Jun 29 2018 16: 10: 39 GMT + 0200(CEST),
        name: 'Heartburn',
        value: 2
      },
      {
        date: Fri Jun 29 2018 23: 30: 36 GMT + 0200(CEST),
        name: 'Heartburn',
        value: 1
      }
    ]
    

    问题:

    什么导致realmjs对象无法返回值数组?

    1 回复  |  直到 6 年前
        1
  •  0
  •   kockburn    6 年前

    Object.values() 不工作。我继续使用这个选项,根据一些帖子,这可能会导致性能问题。

    Array.from(this.symptoms);