我想将数组元素作为参数传递给我的函数。
我有一个数组,我的数组有 Column1 和 Column2 元素。 我的代码根据column1或column2对数组进行排序。 现在,我将 1 和 2 值作为参数传递,并且我的排序代码中有一个 if 条件。
我想更改我的代码,例如:
function sortGrid(ColumnName)
和
var val1 = a.ColumnName.toLowerCase()
您有什么建议吗?
代码:
<html lang="">
<body>
<script>
var arr = [{"Column1":"A","Column2":"F"},{"Column1":"Z","Column2":"B"}];
function sortGrid(col) {
arr.sort(function (a, b) {
if (col == 1)
{
var val1 = a.Column1.toLowerCase();
var val2 = b.Column1.toLowerCase();
};
if (col == 2)
{
var val1 = a.Column2.toLowerCase();
var val2 = b.Column2.toLowerCase();
};
if (val1 < val2)
return -1
if (val1 > val2)
return 1
});
}
sortGrid(1)
console.log(arr[0].Column1)
console.log(arr[1].Column1)
console.log('-------------------')
sortGrid(2)
console.log(arr[0].Column1)
console.log(arr[1].Column1)
</script>
</body>
</html>
最佳答案
您可以使用a[ColumnName]
来做到这一点:
var arr = [{"Column1":"A","Column2":"F"},{"Column1":"Z","Column2":"B"}];
function sortGrid(colName) {
arr.sort(function (a, b) {
var val1 = a[colName].toLowerCase();
var val2 = b[colName].toLowerCase();
return val1 < val2 ? -1
: val1 > val2 ? 1
: 0;
});
}
sortGrid('Column1')
console.log(arr[0].Column1)
console.log(arr[1].Column1)
console.log('-------------------')
sortGrid('Column2')
console.log(arr[0].Column1)
console.log(arr[1].Column1)
请注意,当值相等时,您应该返回 0,因此我使用了三元运算符(两次),其中也包含 0。
关于javascript - 将参数作为数组元素传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399007/