Javascript 具有不确定性质的排序数组

Javascript 具有不确定性质的排序数组,javascript,arrays,sorting,Javascript,Arrays,Sorting,我正在尝试编写一个函数,用于对具有动态属性的对象数组进行排序。但它不起作用。当我写item1.carries的时候没关系。但是,当我使用item1.prop(prop==卡路里)时,它不起作用。我尝试了console.log(prop==“carries”),结果是真的。为什么我不能像这样对数组排序?谢谢 var products = [ { name: "Item1", calories: 170 }, { name: "Item2", calories: 160 } ];

我正在尝试编写一个函数,用于对具有动态属性的对象数组进行排序。但它不起作用。当我写
item1.carries
的时候没关系。但是,当我使用
item1.prop
(prop==卡路里)时,它不起作用。我尝试了
console.log(prop==“carries”)
,结果是真的。为什么我不能像这样对数组排序?谢谢

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
不是产品的属性。它是函数中存在的单个变量。如果所选索引只有1个值,则prop只有1个值,可以像调用任何其他标准变量一样调用。

您在对象中查找的是“prop”,而不是变量prop

您需要使用括号表示法,而不是点表示法

...
if(item1[prop] > item2[prop])
{
    return 1;
}
else if(item1[prop] === item2[prop])
...

您可能想使用括号表示法,即,
obj[key]
我认为点表示法等于括号表示法。谢谢你的帮助。