我试图编写一个函数来排序具有动态属性的对象数组以进行排序。但它不起作用。当我写item1.calories
时,它可以。但是,当我使用item1.prop
(道具=卡路里)时,它不起作用。我试着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.
}
答案 0 :(得分:2)
您正在寻找" prop"不是对象中的变量道具。
您需要使用括号表示法,而不是点符号。
...
if(item1[prop] > item2[prop])
{
return 1;
}
else if(item1[prop] === item2[prop])
...
答案 1 :(得分:1)
prop
不是该产品的属性。它是函数中存在的单个变量。如果1个选定索引只有1个值,那么prop只有1个值,可以像调用任何其他标准变量一样调用。