我正在尝试编写一个函数来对具有动态排序属性的对象数组进行排序。但它不起作用。当我写 item1.calories
时就没问题了。但是当我使用 item1.prop
(prop === calories) 时它不起作用。我尝试 console.log(prop === "calories")
结果是真的。为什么我不能像这样对数组进行排序?谢谢。
var products = [
{ name: "Item1", calories: 170 },
{ name: "Item2", calories: 160 }
];
function sortFunc(item1, item2)
{
var selectedOption = document.getElementById("selectField");
var prop = selectedOption.options[selectedOption.selectedIndex].value; //prop == calories
console.log(prop == "calories"); //true
if(item1.prop > item2.prop)
{
return 1;
}
else if(item1.prop === item2.prop)
{
return 0;
}
else
{
return -1;
}
}
function execSorting()
{
products.sort(sortFunc);
//here is function for displaying my array. It is not sorted.
}
最佳答案
您要查找的是“prop”,而不是对象中的变量 prop。
您需要使用括号表示法,而不是点表示法。
...
if(item1[prop] > item2[prop])
{
return 1;
}
else if(item1[prop] === item2[prop])
...
关于javascript - 具有不确定属性的排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31541569/