Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/ES6解析来自对象数组的值_Javascript_Ecmascript 6 - Fatal编程技术网

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';