我也在 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/