передача аргумента в функцию map, filter, sort в javascript - PullRequest
0 голосов
/ 16 июня 2020

Я столкнулся с ошибкой при попытке передать 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, ' '))

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Должно быть a[sortBy]. Это то же самое, что и точечная нотация, за исключением того факта, что sortBy может происходить из переменной, тогда как когда вы делаете a.sortyBy, он ищет ключ sortyBy (строка), а не переменную динамического c, и, следовательно, вы получаете ошибка.

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)
0 голосов
/ 16 июня 2020

 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, ' '))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...