Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 用于来回转换值的JS映射_Javascript - Fatal编程技术网

Javascript 用于来回转换值的JS映射

Javascript 用于来回转换值的JS映射,javascript,Javascript,我正试图找出最好的方法,将值作为一种翻译过程来回映射。用例必须将不利于SEO的属性代码处理成更好的格式,并在前端显示,但我还需要能够将nice属性标签处理回原始代码,以便在脚本中使用。在下面的示例中,我希望能够查找myMap,检查对象中是否存在字符串值,如果存在,则拉出相应的标签 var myString = 'color_attr_code'; // Want to be able to extract 'color' from the map var myA

我正试图找出最好的方法,将值作为一种翻译过程来回映射。用例必须将不利于SEO的属性代码处理成更好的格式,并在前端显示,但我还需要能够将nice属性标签处理回原始代码,以便在脚本中使用。在下面的示例中,我希望能够查找
myMap
,检查对象中是否存在字符串值,如果存在,则拉出相应的标签

        var myString =  'color_attr_code'; // Want to be able to extract 'color' from the map
        var myAltString =  'color'; // Want to be able to extract 'color_attr_code'

        var myMap = {
            'color_attr_code': 'color'
        }

感谢您的帮助。

您的思路是正确的,尽管在现代环境中,您可能使用
地图而不是对象,或者至少在没有原型的情况下创建对象,这样就不会在
字符串
或默认对象原型提供的其他内容上出现错误匹配

您将有两个地图,每个方向一个,可能最好从相同的源数据中导出:

const mappings = [
    ["color_attr_code", "color"],
    ["blah_attr_code", "blah"],
    // ...
];
const attrToLabel = new Map(mappings);
const labelToAttr = new Map(mappings.map(([key, value]) => [value, key]));
然后使用
attrtlabel.get(“color\u attr\u code”)
获取相应的标签,使用
labelToAttr.get(“color”)
获取相应的代码

实例:

const映射=[
[“颜色属性代码”,“颜色”],
[“废话属性代码”,“废话”],
// ...
];
常量attrtlabel=新映射(映射);
const labelToAttr=新映射(mappings.Map([key,value])=>[value,key]);
log(`Label for“color\u attr\u code”:${attrtlabel.get(“color\u attr\u code”)}`);

log(`Code for“color”:${labelToAttr.get(“color”)}`)那么,到底是什么阻止您将反向[key,value]对添加到
myMap
(甚至添加到单独的对象中)?