Javascript。向对象中添加数组
我毫无问题地解决了挑战16。我还找到了挑战17的答案,但我不明白为什么我只能用方括号将属性添加到这样的对象中:Javascript。向对象中添加数组,javascript,arrays,object,Javascript,Arrays,Object,我毫无问题地解决了挑战16。我还找到了挑战17的答案,但我不明白为什么我只能用方括号将属性添加到这样的对象中:loopNumbers[nestedArr[I][0]=nestedArr[I][1] 因此,我的问题是: 为什么我不能像这样使用点符号?:loopNumbers.nestedArr[I][0]=nestedArr[I][1] 如果我使用点表示法,那么第120行会显示类型错误:无法读取未定义的属性“0” 为什么我不需要在代码行后面加分号loopNumbers[nestedArr[I][0
loopNumbers[nestedArr[I][0]=nestedArr[I][1]
因此,我的问题是:
loopNumbers.nestedArr[I][0]=nestedArr[I][1]
如果我使用点表示法,那么第120行会显示
类型错误:无法读取未定义的属性“0”
loopNumbers[nestedArr[I][0]]=nestedArr[I][1]
挑战16 您将获得一个名为
nestedArr
的空数组。使用for循环,将5个子数组添加到nestedArr
,每个嵌套数组包含字符串“loop”,并将nestedArr
中的相应索引连接为第一个元素,将索引作为第二个元素。子阵列示例-['loop3',3]
分号在javascript中是可选的,但建议始终添加分号,以避免在某些情况下出现歧义(请参阅) 对于添加属性,如果参数是静态的,则可以使用点,例如:
loopnumbers.myproperty = 3
但是,由于nestedArr[i][0]不是静态的,因此需要将括号括起来。编辑:当更多的是“访问”或“考虑”时,我多次使用“获取”。所以是的,我说的是“得到这个东西”,我的意思不一定是阅读它的价值,而是“我们正在做一些事情”。就这样吧,好吗
在js
中,数组被访问为“在array
的索引中获取条目”:
对象作为“从对象
获取名为属性
的属性”访问:
您试图做的是“从数组的项索引命名的对象
中获取属性”。这是你能做的。但你实际做的是要求一些不同的东西
loopNumbers.nestedArr[i][0]
表示“从对象loopNumbers
和索引i
处的get条目以及索引0
处的get条目获取属性nestedArr
”
要获取由nestedArr的i
th条目的0
th条目命名的loopNumbers
属性,必须首先获取nestedArr的i
th条目
nestedArr[i]
然后您需要输入0
nestedArr[i][0]
现在,这不是一个您可以直接使用的属性,因为正如前面所说的loopNumbers。Nestedar
尝试从对象loopNumbers
获取名为nestedArr
的属性,该对象不存在。获取由nestedArr[i][0]中存储的值命名的属性的唯一方法
来自名为loopNumbers
的对象,其方括号如下
loopNumbers[nestedArr[i][0]]
分号换行符在javascript中是可选的,因为自动插入分号时需要注意,如果不使用,某些代码序列将中断。最佳做法是始终使用它们loopNumbers。nestedArr
表示“在loopnumberr
上访问名为nestedArr
的属性”“.那不是你想要的,所以你不应该这么做。考虑与数学运算符类似的问题。代码>1+2*3
不同于(1+2)*3
。谢谢法泽加!我如何知道参数是静态的,而不是JavaScript??我知道在Java中,我使用了像static int num=3代码>所谓“静态”我指的是不被解释的东西,也就是说一个词。你不能做loopnumber.variable=something。
object.property
object["property"]
nestedArr[i]
nestedArr[i][0]
loopNumbers[nestedArr[i][0]]