Javascript 与对象属性混淆。我如何不得到“未定义”?
我试图为字母表中的每个字母创建一个包含两个属性的对象的数组。字母和dd_数组。现在我正在设置dd_array=[],但我希望它是相应的morseDic属性 例如{charObjArray[0]={letter:'a',dd_数组:[0,1]} 我能得到一些关于如何尽可能最好地编写代码的提示吗Javascript 与对象属性混淆。我如何不得到“未定义”?,javascript,arrays,object,dictionary,prototype,Javascript,Arrays,Object,Dictionary,Prototype,我试图为字母表中的每个字母创建一个包含两个属性的对象的数组。字母和dd_数组。现在我正在设置dd_array=[],但我希望它是相应的morseDic属性 例如{charObjArray[0]={letter:'a',dd_数组:[0,1]} 我能得到一些关于如何尽可能最好地编写代码的提示吗 alpha_array = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v",
alpha_array = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
morseDic = {
a: [0,1],
b: [1,0,0,0],
c: [1,0,1,0],
d: [1,0,0],
e: [0],
f: [0,0,1,0],
g: [1,1,0],
h: [0,0,0,0],
i: [0,0],
j: [0,1,1,1],
k: [1,0,1],
l: [0,1,0,0],
m: [1,1],
n: [1,0],
o: [1,1,1],
p: [0,1,1,0],
q: [1,1,0,1],
r: [0,1,0],
s: [0,0,0],
t: [1],
u: [0,0,1],
v: [0,0,0,1],
w: [0,1,1],
x: [1,0,0,1],
y: [1,0,1,1],
z: [1,1,0,0]
}
function _alpha(_char, dd_array) {
this.letter = _char;
this.dd_array = dd_array;
}
var _charObjArray = []
for (i = 0; i < alpha_array.length; i++) {
var _charNow = alpha_array[i];
var __charNow = _charNow;
var __charNow = new _alpha(_charNow, "[]") // "[]" should be replaced with the _charNow corresponding property from morseDic
_charObjArray.push(__charNow)
}
console.log(_charObjArray);
在α中,而不是:
this.dd_array = dd_array;
…使用_char索引到morseDic对象:
…然后根本不要把第二个参数传递给_alpha
但如果您想将其作为参数传递给_alpha:
var __charNow = new _alpha(_charNow, morseDic[_charNow]);
在JavaScript中,您可以使用点符号和属性名literal obj.foo或morseDic.a访问对象属性,也可以使用括号符号和属性名字符串*obj[foo]或morseDic[a]。在后一种情况下,字符串可以是任何表达式的结果,包括变量查找
*在ES6中,它将是字符串或符号。new\u alpha\u charNow,morseDic[\u charNow]?为什么[]它是字符串而不是数组?我不明白你为什么要把事情复杂化。您已经有一个键数组和相应的对象文字。你已经得到了你所需要的一切。
var __charNow = new _alpha(_charNow, morseDic[_charNow]);