Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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元组中的值_Javascript_Json - Fatal编程技术网

比较;“关键”;javascript元组中的值

比较;“关键”;javascript元组中的值,javascript,json,Javascript,Json,我使用关联数组创建json对象,序列化并将其发送给第三方: var MSG = {} MSG["SESSION_START"] = 0x0000; MSG["DONE"] = 0x0001; var session_id = gen_rand_no(); var msg_tuple = {MSG["SESSION_START"] : session_id}; var json_msg_tuple = JSON.stringify(msg_tuple); send(json_

我使用关联数组创建json对象,序列化并将其发送给第三方:

var MSG = {}
MSG["SESSION_START"] = 0x0000;
MSG["DONE"]          = 0x0001;

var session_id = gen_rand_no();
var msg_tuple = {MSG["SESSION_START"] : session_id};
var json_msg_tuple = JSON.stringify(msg_tuple);

send(json_msg_tuple); 
参与方通常会以序列化JSON对象的形式回复确认消息:

var serialized_json = recv();
var json_obj = JSON.parse(serialized_json); 
如何检查JSON对象中的第一个元素是否对应于MSG[“DONE”]


在问题的答案中,假设JSON对象具有一组给定的属性,直到对嵌套的属性进行迭代

JavaScript中的对象没有“键顺序”,因此不存在“第一个元素”

考虑到这一点,如果密钥存在,则存在以下两个用于测试的选项:

if( MSG['DONE'] in json_obj)
// or...
if( json_obj.hasOwnProperty(MSG['DONE']))
在现代浏览器(IE9+、FF4+、Chrome5+、Opera12+、Safari5+)中,您可以使用内置的Object.keys方法:

var keys = Object.keys(json_obj);
if (json_obj[keys[0]] === MSG["DONE"]) { ... }
这回答了你的问题吗?是否要将第一个json_obj属性的值与MSG[“DONE”]的值进行比较?还是我误解了你的问题


另外,我尝试了Object.keys()方法,它按照键在对象中列出的顺序返回键,但我不确定这是否可以保证。

可能的重复:我不认为
{MSG[“SESSION_START”]:SESSION_id}
是有效的JavaScript。首先,您只使用JavaScript对象。JSON是字符串的一种格式。正因为如此,我觉得你想得太多了。只需设置一个断点并检查
json_obj
上有什么。您可能只需要使用
json_obj['DONE']
…JavaScript本身没有“元组”。您还可以使用
MSG.SESSION\u START
而不是
MSG[“SESSION\u START”]
。要将变量值用作键,您需要执行以下操作:
var MSG\u tuple={};msg_tuple[msg[“SESSION_START”]]=SESSION_id。然而,在ES6中,您可以这样做:
var msg_tuple={[msg[“SESSION_START”]]:SESSION_id}
尽管如此,如果出于某种原因您不知道密钥的名称,您可以这样做:
Object.keys(json_obj)[0]
如果元组中的第二个项也具有值0x0000,而第一个项具有不同的值,那么会发生什么行为?