Javascript/ES6解析来自对象数组的值
我想编写一个通用解析器,它接受一个值,然后键入并返回给定值的标签 目前,这是我的代码:Javascript/ES6解析来自对象数组的值,javascript,ecmascript-6,Javascript,Ecmascript 6,我想编写一个通用解析器,它接受一个值,然后键入并返回给定值的标签 目前,这是我的代码: import a from "../constants/a" import b from "../constants/b" import c from "../constants/c" const find = (value, fromArray) => fromArray.find((term) => term.value === value); const getLabel = (of, f
import a from "../constants/a"
import b from "../constants/b"
import c from "../constants/c"
const find = (value, fromArray) => fromArray.find((term) => term.value === value);
const getLabel = (of, fromArray) => {
const value = find(of, fromArray);
return (value && value.label) || 'No info';
};
export default (value, type) => {
switch (type) {
case 'paymentMethod':
return getLabel(value, paymentMethods);
case 'paymentTerm':
return getLabel(value, paymentTerms);
case 'dateType':
return getLabel(value, dateTypes);
default:
return 'No info';
}
}
还有什么比ES6更快速、更简洁的方法来实现这一点呢?您可以使用按
大小写索引的对象,而不是独立的数组支付方法等,这样您就可以使用非常简洁的对象查找,而不是开关:
const obj = {
paymentMethod: [ < paymentMethodArray> ],
paymentTerm: [ < paymentTermArray> ],
dateType: [ < dateTypeArray> ],
};
export default (value, type) => {
const arr = obj[type];
return arr
? getLabel(value, arr)
: 'No info';
}
有点混淆,因为你使用<代码> &和代码>来评估一个值而不是布尔值——你可以考虑使用条件运算符代替:
return value
? value.label
: 'No info';
你的代码很好。你是说从“./constants/c”
导入c?@jfriend00哦,是的,thanks@JonasWilms是的,它可以工作,但我认为这是一个重复的过程,可以在切换,case
情况下进行改进。这真的属于它-而不是Stackoverflow,问题不是解决任何问题
return value
? value.label
: 'No info';