JavaScript:如何将字符串参数传递给函数以用于按该字符串参数的值对对象数组进行排序?

标签 javascript arrays sorting object

我也在 React 工作。我正在尝试构建一个可重用的排序组件,它按属性字段对对象数组进行排序。例如,具有如下属性的对象数组:

let seed = [
    {
        name: 'John', age: '35', cars : '4', income: '35000'
   },
   {
        name: 'Johnnny', age: '15', cars : '0', income: '100'
   },
    {
        name: 'Mary', age: '45', cars : '41', income: '350000'
   },
]

我可以这样写,通过 name 属性对数组进行排序:

let sortedData = [...seed].sort((a, b) => (a.name > b.name ? 1 : -1));

我想做的是这样的:

function sortData(array, field) {
  array.sort((a, b) => (a.[field] > b.[field] ? 1 : -1))
}

但这看起来不像是有效的语法。如果不编写不同类型的每个属性,我怎么能做到这一点:

let sortedData = [...seed].sort((a, b) => (a.age > b.age ? 1 : -1));

cars
income
and so on

最佳答案

从您的访问器中删除点。您可以为每个键使用括号表示法或点表示法,但不能同时使用两者。

let seed = [
    {
        name: 'John', age: '35', cars : '4', income: '35000'
   },
   {
        name: 'Johnnny', age: '15', cars : '0', income: '100'
   },
    {
        name: 'Mary', age: '45', cars : '41', income: '350000'
   },
]

function sortData(array, field) {
  return array.sort((a, b) => (a[field] > b[field] ? 1 : -1))
}

let sortedData = sortData([...seed], "cars");

console.log(sortedData);
.as-console-wrapper { max-height: 100% !important; top: auto; }

关于JavaScript:如何将字符串参数传递给函数以用于按该字符串参数的值对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57139557/

相关文章:

java - struts2变量仅在javascript中被调用一次

javascript - 将按钮添加到特定的 div

java - 新手数组问题

c - 为什么将字符串的 scanf 保存到 str 而将 int 发送到 i 的指针?

java - 标签数组。素数生成器。 JavaFX

c - C 中的合并排序代码无法正常工作

javascript - 箭头函数是否比 v8 中的普通独立函数声明更快(性能更高、更轻)?

python - 如何在Python中按数字然后字母对列表进行排序?

python - 按另一个字典排序字典

javascript - 为 CKeditor 中的字段添加帮助文本