所以我有一堆我需要转换为新值的值。基本上有一个传奇。一秒钟就会有意义。到目前为止,我一直在使用关联数组,或者在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,因为它是我经常使用的唯一其他语言,是否也会使用带有关联数组的相同概念?
非常感谢您的帮助和建议!
干杯!
答案 0 :(得分:3)
你没有使用对象的力量,因为没有理由在对象中循环。它已经有了你可以直接查找的键:
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()
,因此您不会得到一个包含一些未定义值的数组,但我不确定您最终会尝试使用哪种类型的最终结果。