排序具有不确定属性的数组

时间:2015-07-21 14:12:49

标签: javascript arrays sorting

我试图编写一个函数来排序具有动态属性的对象数组以进行排序。但它不起作用。当我写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.
}

2 个答案:

答案 0 :(得分:2)

您正在寻找" prop"不是对象中的变量道具。

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

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

答案 1 :(得分:1)

prop不是该产品的属性。它是函数中存在的单个变量。如果1个选定索引只有1个值,那么prop只有1个值,可以像调用任何其他标准变量一样调用。