【问题标题】:How to filter array of map/key-pair如何过滤映射/密钥对数组
【发布时间】:2020-11-12 17:39:52
【问题描述】:

我想要21岁以上。

const people = [
     {0: {name: 'john', age: 30}},
     {1: {name: 'jay', age: 33}},
     {2: {name: 'cris', age: 18}}
];

我尝试下面的代码,但它返回空结果

const result = people.filter(person => person.age >= 21);
console.log(result);

0,1,2是数组的索引

【问题讨论】:

    标签: javascript arrays typescript google-cloud-firestore


    【解决方案1】:

    此解决方案仅在您的键 0, 1, 2.. 与索引相同时才有效。 如果您更改元素的顺序,则解决方案将不起作用。

    const people = [
         {0: {name: 'john', age: 30}},
         {1: {name: 'jay', age: 33}},
         {2: {name: 'cris', age: 18}}
    ];
    people.filter((item, index) => item[index].age >= 21);
    

    【讨论】:

      【解决方案2】:

      0,1,2是数组的索引

      我不认为它们是,我相信它们是对象的键试试这个

      const people = [
           {0: {name: 'john', age: 30}},
           {1: {name: 'jay', age: 33}},
           {2: {name: 'cris', age: 18}}
      ];
      
      const result = people.filter(person =>Object.values(person)[0].age >= 21);
      console.log(result);

      或者像这样声明你的数组,你的代码应该可以工作

          const people = [
               {name: 'john', age: 30},
               {name: 'jay', age: 33},
               {name: 'cris', age: 18}
          ];
         const result = people.filter(person => person.age >= 21);
         console.log(result);

      【讨论】:

        【解决方案3】:

        它不会使用给定的索引初始化数组,它会创建具有01 等属性的单独对象。

        像这样声明数组:

        const people = [
             {name: 'john', age: 30},
             {name: 'jay', age: 33},
             {name: 'cris', age: 18}
        ];
        

        【讨论】:

          猜你喜欢
          • 2019-09-29
          • 2022-01-14
          • 2022-07-25
          • 1970-01-01
          • 2019-09-05
          • 1970-01-01
          • 2020-03-17
          • 2020-11-23
          • 1970-01-01
          相关资源
          最近更新 更多