【问题标题】:passing argument to map, filter, sort function in javascript将参数传递给javascript中的map、filter、sort函数
【发布时间】:2020-06-16 15:37:51
【问题描述】:
我在尝试在 sort(callback) 函数中传递 Value(sortBy ) 时遇到错误。
let sortBy = 'birth'
let usersJSON = [
{
name: "Sania Mirza",
birth: "11/30/2011"
}, {
name: "Lata Pathak",
birth: "10/31/1999"
}, {
name: "Lata Pathak",
birth: "10/31/2020 "
}
]
usersJSON.sort(function (a, b) {
//var dateA = new Date(a.birth), dateB = new Date(b.birth); // this is working fine
var dateA = new Date(a.sortBy), dateB = new Date(b.sortBy); // I want sorting based on "sortBy"
return dateA - dateB;
});
console.log("componentDidMount :", JSON.stringify(usersJSON, null, ' '))
【问题讨论】:
标签:
javascript
object
key
【解决方案1】:
应该是 a[sortBy] 。这与点表示法相同,除了 sortBy 可能来自变量,而当您执行 a.sortyBy 时,它会查找键 sortyBy(字符串),而不是动态变量,因此您会收到错误消息。
let sortBy = 'birth'
let usersJSON = [
{
name: "Sania Mirza",
birth: "11/30/2011"
}, {
name: "Lata Pathak",
birth: "10/31/1999"
}, {
name: "Lata Pathak",
birth: "10/31/2020 "
}
]
usersJSON.sort(function (a, b) {
//var dateA = new Date(a.birth), dateB = new Date(b.birth); // this is working file
var dateA = new Date(a[sortBy]), dateB = new Date(b[sortBy]); // I want sorting based on "sortBy"
return dateA - dateB;
});
console.log(usersJSON)
【解决方案2】:
let sortBy = 'birth'
let usersJSON = [
{
name: "Sania Mirza",
birth: "11/30/2011"
}, {
name: "Lata Pathak",
birth: "10/31/1999"
}, {
name: "Lata Pathak",
birth: "10/31/2020 "
}
]
usersJSON.sort(function (a, b) {
//var dateA = new Date(a.birth), dateB = new Date(b.birth); // this is working file
var dateA = new Date(a[sortBy]), dateB = new Date(b[sortBy]); // I want sorting based on "sortBy"
return dateA - dateB;
});
console.log("componentDidMount :", JSON.stringify(usersJSON, null, ' '))