-2

In Javascript, is there a way to filter the JSON file based on the values in the array?

For example, with the following array:

["c", "f"]

and the JSON object file:

[{
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4,
    "e": 5,
    "f": 6

},{
    "a": 2,
    "b": 4,
    "c": 6,
    "d": 8,
    "e": 10,
    "f": 12
}]

I would like to generate the following result:

[{
    "c": 3,
    "f": 6
},{
    "c": 6,
    "f": 12
}]
Fxs7576
  • 1,259
  • 4
  • 23
  • 31

2 Answers2

4

You could map the values of the given keys for a new object.

var keys = ["c", "f"],
    data = [{ a: 1, b: 2, c: 3, d: 4, e: 5, f: 6 }, { a: 2, b: 4, c: 6, d: 8, e: 10, f: 12 }],
    filtered = data.map(o => Object.assign(...keys.map(k => ({ [k]: o[k] }))));

console.log(filtered);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
0

You can use map() and reduce() for this.

var keys = ["c", "f"];
var arr = [{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6},{"a":2,"b":4,"c":6,"d":8,"e":10,"f":12}];

var result = arr.map(o => {
  return keys.reduce((r, k) => (o[k] && (r[k] = o[k]), r), {})
})

console.log(result)
Nenad Vracar
  • 118,580
  • 15
  • 151
  • 176