Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带方括号和引号的JavaScript JSON对象_Javascript - Fatal编程技术网

带方括号和引号的JavaScript JSON对象

带方括号和引号的JavaScript JSON对象,javascript,Javascript,问题1:为什么arr['first','second']会得到最后一个元素 问题2:child与child有什么不同 谢谢大家 它不是一个数组而是一个对象,但第一个问题实际上很有趣 使用[]符号获取对象属性意味着您需要传递一个键-它可能看起来像数组文字,但实际上不是 你放在方括号里的是一个陈述 例如,您可以这样做:arr[condition?'first':'second']-解析语句,并将其返回值作为键传递 在arr['first','second']中,内部语句可以被解读为('first'

问题1:为什么arr['first','second']会得到最后一个元素

问题2:child与child有什么不同



谢谢大家

它不是一个数组而是一个对象,但第一个问题实际上很有趣

使用
[]
符号获取对象属性意味着您需要传递一个键-它可能看起来像数组文字,但实际上不是

你放在方括号里的是一个陈述

例如,您可以这样做:
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']:-)首先,yout
arr
不是一个数组,也请参阅关于,这两个问题都是重复的,但是独立的。对不起@Grundy,我现在修改标题。@salman在本例中您希望得到什么样的输出
console.log(arr['first',second']):-)
var arr = ['a', 'b', 'c'];
arr[0] // 'a'
arr['0'] // 'a'
Object.keys(arr) // ['0', '1', '2']