如何在javascript中传递适当的密钥时获取JavaScript值

时间:2017-03-18 15:25:37

标签: javascript

var optList = { 
'List1': [{value: 'a', label: 'apple'}, {value: 'b', label: 'ball'}, {value: 'c', label: 'car'}, {value: 'd', label: 'doll'}, {value: 'e', label: 'egg'}],
'List2': [{value: 'f', label: 'fox'}, {value: 'g', label: 'goal'}, {value: 'h', label: 'hat'}, {value: 'i', label: 'ink'}, {value: 'j', label: 'jack'}]
};

function getValue(selectedValue){
var list1 = optList.List1;
var allKeys = Object.keys(selectedValue);

}

我正在尝试编写一个javascript / angular函数来从JSON列表中获取一个键值。示例:如果我通过list1-' a',那么我希望返回值是' apple'。 这可能很简单,我得到了很多错误而没有达到预期的效果。 你能帮助我吗,谢谢。

1 个答案:

答案 0 :(得分:0)

假设您使用带有键和value属性值的字符串并且希望获得label的值,您可以迭代数组,直到找到所需的值并返回标签。

function getLabel(object, key) {
    var keys = key.split('-'),
        label;

    object[keys[0]].some(function (a) {
        if (a.value === keys[1]) {
            label = a.label;
            return true;
        }
    });
    return label;
}

var optList = { List1: [{ value: 'a', label: 'apple' }, { value: 'b', label: 'ball' }, { value: 'c', label: 'car' }, { value: 'd', label: 'doll' }, { value: 'e', label: 'egg' }], List2: [{ value: 'f', label: 'fox' }, { value: 'g', label: 'goal' }, { value: 'h', label: 'hat' }, { value: 'i', label: 'ink' }, { value: 'j', label: 'jack' }] };

console.log(getLabel(optList, 'List1-a'));

ES6

function getLabel(object, key) {
    var keys = key.split('-');
    return (object[keys[0]].find(a => a.value === keys[1]) || {}).label;
}

var optList = { List1: [{ value: 'a', label: 'apple' }, { value: 'b', label: 'ball' }, { value: 'c', label: 'car' }, { value: 'd', label: 'doll' }, { value: 'e', label: 'egg' }], List2: [{ value: 'f', label: 'fox' }, { value: 'g', label: 'goal' }, { value: 'h', label: 'hat' }, { value: 'i', label: 'ink' }, { value: 'j', label: 'jack' }] };

console.log(getLabel(optList, 'List1-a'));