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'。 这可能很简单,我得到了很多错误而没有达到预期的效果。 你能帮助我吗,谢谢。
答案 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'));