Как отфильтровать массив объектов только с определенными свойствами?

let arr = [
  { name: "rick", age: "44", phone: "33434", address: "florida" },
  { name: "sam", age: "33", phone: "23232", address: "milan" }
]

Я хочу показать только имя и возраст, например:

let filteredArr = [
  { name: "rick", age: "44"},
  { name: "sam", age: "33"}
]

person ubuntu7788    schedule 31.03.2020    source источник
comment
Что вы пробовали и в чем именно проблема? Кажется, вы хотите отобразить, а не фильтровать массив; выходная длина совпадает с входной длиной.   -  person jonrsharpe    schedule 31.03.2020


Ответы (2)


В этом случае вы сопоставляете использовать карту вместо filter

let arr = [{
    name: "rick",
    age: "44",
    phone: "33434",
    address: "florida"
  },
  {
    name: "sam",
    age: "33",
    phone: "23232",
    address: "milan"
  }
]

let filteredData = arr.map(item => {
  return {
    name: item.name,
    age: item.age
  }

});

console.log(filteredData)

person brk    schedule 31.03.2020

С картой

let arr = [
  { name: "rick", age: "44", phone: "33434", address: "florida" },
  { name: "sam", age: "33", phone: "23232", address: "milan" }
]

const newarr = arr.map(({name, age}) => ({name, age}))

console.log(newarr)

На основе https://stackoverflow.com/a/47916931/476951 вы можете сделать это динамически

const arr = [
  { name: "rick", age: "44", phone: "33434", address: "florida" },
  { name: "sam", age: "33", phone: "23232", address: "milan" }
]

function filterMap (arr, fields) {
  return arr.map(el => 
    fields.reduce((a,c) => ({...a, [c]: el[c]}), {}))
} 

const newarr = filterMap(arr, ['name', 'age'])
console.log(newarr)

person yunzen    schedule 31.03.2020