javascript - 转换对象或数组值的最佳方法

标签 javascript json

所以我有一堆值需要转换为新值。基本上都是有传说的。过一会儿就会明白了。到目前为止,我一直在使用关联数组,或者在 javascript 上下文中,使用对象作为我的图例。

我的使用适用于单个字符串、数组(如我所拥有的)或对象。

var legend = {
    "html": "html5",
    "css2": "css3",
    "javascript": "jquery"  
}

var old_array = new Array("html", "css2", "javascript");
var new_array = [];

max = old_array.length;

// loop through values in original array
for(i=0;i<max;i++){
    for(var val in legend){
            // looping through values in legend.  If match, convert
        if(old_array[i] === val){
            new_array[i] = legend[val];
        }
    }
}
console.log(new_array);
document.write(new_array);

如果将其粘贴到 firebug 或 jsfiddle 中,它将显示一个包含转换后的值的新数组。

我决定使用对象/关联数组作为我的图例,因为它很容易扩展,以防需要转换新值。我认为它非常强大。它适用于转换单个字符串、如上所示的数组或对象(键或值)。

对于转换值,这是最好的方法吗?有什么注意事项吗?对于 php,因为它是我经常使用的唯一其他语言,是否也可以使用带有关联数组的相同概念?

非常感谢您的帮助和建议!

干杯!

最佳答案

您没有使用该对象的功能,因为没有理由循环该对象。它已经有了你可以直接查找的键,如下所示:

var legend = {
    "html": "html5",
    "css2": "css3",
    "javascript": "jquery"  
}

var old_array = new Array("html", "css2", "javascript");
var new_array = [];

max = old_array.length;

// loop through values in original array
for(var i=0;i<max;i++){
    // see if array value is a key in the legend object
    if ([old_array[i] in legend) {
        new_array.push(legend[old_array[i]]);
    }
}
console.log(new_array);
document.write(new_array);

我还更改了它以使用 new_array.push() 这样你就不会得到一个带有一些未定义值的数组,但我不太确定你的最终结果是什么类型我正在尝试结束。

关于javascript - 转换对象或数组值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891404/

相关文章:

javascript - 使用 Raphaël JS 和 SVG 调整扇区路径大小的更优雅的方法?

javascript - 使用不同的子元素数量重新渲染后,React js 崩溃

javascript - 获取由内容元素选择的 dom-repeat 模板生成的元素

javascript - 如何在 JavaScript 中运行序列函数

javascript - 对 JSON 键进行子串化

c# - 在不知道索引的情况下在 C# 中解析 json

用于在符号处按行分割 JSON 文本的 Java 例程

iphone - 如何使用 GET 方法 JSON Objective C 在 NSRequestURL 中传递特殊字符(如 #、@、%、$)

c# - 是微软的 Json (System.Runtime.Serialization.Json) 错误吗?

javascript - 使用变量值设置 slider 拇指高度