.map数组函数中的动态访问对象属性

时间:2018-11-12 12:44:24

标签: javascript arrays object properties

我想拥有可重用的函数,该函数根据作为参数传递给函数的属性来映射对象数组。

这是我的代码:

let arr = [
  {
    country: 'poland',
    population: 380000
  },
  {
    country: 'bangladesh',
    population: 3492423
  }
]

function filterMyArr (myArr, condition) {
  return myArr.map(element => element.country)
}

console.log(filterMyArr(arr))

当我更改代码并尝试通过条件时,执行该命令不起作用。我想调用带有第二个参数的函数,例如filterMyArr(arr,country)并得到类似的结果。我希望它可重复使用,因此我可以将其用于人口或任何其他财产。谢谢。

3 个答案:

答案 0 :(得分:6)

您只需要使用 bracket notation ,如下所示:

function filterMyArr (myArr, condition) {
  return myArr.map(element => element[condition])
}

condition中将string作为object作为属性的名称传递。

注意:

但是请注意,在不执行此condition参数的情况下调用函数会在执行操作时引发错误:

console.log(filterMyArr(arr))

答案 1 :(得分:1)

您非常亲密。试试这个

let arr = [
  {
    country: 'poland',
    population: 380000
  },
  {
    country: 'bangladesh',
    population: 3492423
  }
]

function filterMyArr (myArr, condition) {
  return myArr.map(element => element[condition])
}

console.log('Countries - ', filterMyArr(arr, 'country'))

console.log('Population - ', filterMyArr(arr, 'population'))

答案 2 :(得分:0)

您需要将第二个参数(属性)作为字符串传递,并使用方括号表示法进行访问:

let arr = [
  {country: 'poland', population: 380000},
  {country: 'bangladesh', population: 3492423}
];

function filterMyArr (myArr, prop) {
  return myArr.map(obj => obj[prop]);
}

console.log(filterMyArr(arr, 'country'));
console.log(filterMyArr(arr, 'population'));