带方括号和引号的JavaScript JSON对象
问题1:为什么arr['first','second']会得到最后一个元素 问题2:child与child有什么不同带方括号和引号的JavaScript JSON对象,javascript,Javascript,问题1:为什么arr['first','second']会得到最后一个元素 问题2:child与child有什么不同 谢谢大家 它不是一个数组而是一个对象,但第一个问题实际上很有趣 使用[]符号获取对象属性意味着您需要传递一个键-它可能看起来像数组文字,但实际上不是 你放在方括号里的是一个陈述 例如,您可以这样做:arr[condition?'first':'second']-解析语句,并将其返回值作为键传递 在arr['first','second']中,内部语句可以被解读为('first'
谢谢大家 它不是一个数组而是一个对象,但第一个问题实际上很有趣 使用
[]
符号获取对象属性意味着您需要传递一个键-它可能看起来像数组文字,但实际上不是
你放在方括号里的是一个陈述
例如,您可以这样做:arr[condition?'first':'second']
-解析语句,并将其返回值作为键传递
在arr['first','second']
中,内部语句可以被解读为('first','second')
,它返回second
,因为在JS中,由许多表达式组成的语句返回最后一个表达式的值,例如(x=2,4)
返回4
它还为
object.child
与object['child']
提供了一些线索。在第一个示例中,您需要使用实际键,而在第二个示例中,您需要传递语句;在本例中,语句的计算结果为字符串,但它可以是变量名,也可以是任何可以计算为可以用作键(字符串或数字)的内容。它不是数组,而是对象,但第一个问题实际上很有趣
使用[]
符号获取对象属性意味着您需要传递一个键-它可能看起来像数组文字,但实际上不是
你放在方括号里的是一个陈述
例如,您可以这样做:arr[condition?'first':'second']
-解析语句,并将其返回值作为键传递
在arr['first','second']
中,内部语句可以被解读为('first','second')
,它返回second
,因为在JS中,由许多表达式组成的语句返回最后一个表达式的值,例如(x=2,4)
返回4
它还为
object.child
与object['child']
提供了一些线索。在第一个示例中,您需要使用实际键,而在第二个示例中,您需要传递语句;在本例中,语句的计算结果为字符串,但它可以是变量名,也可以是任何可以计算为可以用作键(字符串或数字)的内容。在JS中,对象是键值对的集合(如果需要,可以是映射或字典)。数组只是另一种类型的对象。但是,您的示例以普通对象为特征
如前所述,对象具有键,用于提供对方法和属性的访问。
您可以通过2种符号访问对象的成员:
- 点符号:
,o.x
o,y
- 括号表示法:
,o['x']
o['y']
var name='x';o[name]
将起作用,而o[x]
将不起作用
这也适用于阵列:
var o = {
x: 12,
y: function () { console.log(this.x); }
};
o.y(); // 12
但是,您不能执行arr.0
现在,关于你的问题:
arr['first',second']
与arr['second']
等效,因为您使用逗号运算符从左到右计算每个表达式,并返回最右表达式的值。
例如:
1,alert(0),5
为您提供5
在JS中,对象是键值对的集合(如果需要,可以使用地图或字典)。数组只是另一种类型的对象。但是,您的示例以普通对象为特征
如前所述,对象具有键,用于提供对方法和属性的访问。
您可以通过2种符号访问对象的成员:
- 点符号:
,o.x
o,y
- 括号表示法:
,o['x']
o['y']
var name='x';o[name]
将起作用,而o[x]
将不起作用
这也适用于阵列:
var o = {
x: 12,
y: function () { console.log(this.x); }
};
o.y(); // 12
但是,您不能执行arr.0
现在,关于你的问题:
arr['first',second']
与arr['second']
等效,因为您使用逗号运算符从左到右计算每个表达式,并返回最右表达式的值。
例如:
1,alert(0),5
给你5
首先,你的arr
不是一个数组,也可以看一下,这两个问题都是重复的,但是是分开的。对不起@Grundy,我现在修改标题。@Salmon在这种情况下你期望的输出是什么console.log(arr['first',second']代码>:-)首先,youtarr
不是一个数组,也请参阅关于,这两个问题都是重复的,但是独立的。对不起@Grundy,我现在修改标题。@salman在本例中您希望得到什么样的输出console.log(arr['first',second'])代码>:-)
var arr = ['a', 'b', 'c'];
arr[0] // 'a'
arr['0'] // 'a'
Object.keys(arr) // ['0', '1', '2']