JS ES6 Correct way to filter object by array of keys

后端 未结 4 664
旧时难觅i
旧时难觅i 2021-01-26 21:57

I would like to take an array of objects and filter each object to only return the properties where the key matches an item in an array.

For example:

con         


        
4条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-26 22:17

    You can .map each object to its entries so you can .filter out any entries which don't have a key in myKeys, and then use .fromEntries() to build up your new object like so:

    const myKeys = ['key_1', 'key_3'];
    const myArray = [{
        key_1: 'Some Value A',
        key_2: 'Some Other Value A',
        key_3: 'Some Final Value A',
      },
      {
        key_1: 'Some Value B',
        key_2: 'Some Other Value B',
        key_3: 'Some Final Value B',
      },
      {
        key_1: 'Some Value C',
        key_2: 'Some Other Value C',
        key_3: 'Some Final Value C',
      },
    ];
    
    const res = myArray.map(obj => Object.fromEntries(Object.entries(obj).filter(([k, v]) => myKeys.includes(k))));
    
    console.log(res);

提交回复
热议问题