【问题标题】: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, ' '))

      【讨论】:

        猜你喜欢
        • 2021-04-19
        • 2015-07-19
        • 2011-10-02
        • 2016-01-16
        • 2019-07-15
        • 1970-01-01
        • 2017-10-16
        • 2011-04-16
        相关资源
        最近更新 更多