Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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_Object - Fatal编程技术网

对象编辑的javascript对象

对象编辑的javascript对象,javascript,object,Javascript,Object,我有下面的代码,它不工作 var conversations = { }; conversations['5634576'].name = 'frank'; 显然,我不能在对象内部创建对象。我想使用conversation对象存储对象数组,用localStorage保存客户端消息的历史记录,以节省服务器端的空间 但是很明显,我甚至不能在对象内部创建变量,除非它们已经存在,比如: var conversations = { 123: { name: 'test' } }; conversatio

我有下面的代码,它不工作

var conversations = { };
conversations['5634576'].name = 'frank';
显然,我不能在对象内部创建对象。我想使用conversation对象存储对象数组,用localStorage保存客户端消息的历史记录,以节省服务器端的空间

但是很明显,我甚至不能在对象内部创建变量,除非它们已经存在,比如:

var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";
// Create an object
var conversations = {};

// Add a blank object to the object if doesn't already exist
if (!conversations.hasOwnProperty('5634576')) {
    conversations['5634576'] = {};
}

// Add data to the child object
conversations['5634576'].name = 'frank';
conversations{
    '5634576': {
        name : 'frank'
    }
}
但是,由于我不知道将使用的ID,我不知道如何解决这个问题


有什么想法吗?

你需要这样做:

var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";
// Create an object
var conversations = {};

// Add a blank object to the object if doesn't already exist
if (!conversations.hasOwnProperty('5634576')) {
    conversations['5634576'] = {};
}

// Add data to the child object
conversations['5634576'].name = 'frank';
conversations{
    '5634576': {
        name : 'frank'
    }
}
对象将如下所示:

var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";
// Create an object
var conversations = {};

// Add a blank object to the object if doesn't already exist
if (!conversations.hasOwnProperty('5634576')) {
    conversations['5634576'] = {};
}

// Add data to the child object
conversations['5634576'].name = 'frank';
conversations{
    '5634576': {
        name : 'frank'
    }
}
更新

您可以在

if('5634576' in conversations) {
    // Exist
}

在代码中,无法将变量添加到索引“5634576”,因为它尚未存在

var conversations = { };
conversations['5634576'].name = 'frank';
您需要创建它,然后分配valriable

var conversations = { };
conversations['5634576'] = {};
conversations.name = 'frank';

也许是最短的途径:

var conversations = {};
(conversations['5634576'] = {}).name = 'frank';
我假设您将在一个函数中执行此操作,XHR或其他

conversations.add_message = function (msg) {
    var id = msg.conversation_id;
    conversations[id] = conversations[id] ||
                        conversations.new_conversation(msg.user_name); // returning a conversation object
    conversations[id].messages.push(msg);
};


conversations.new_conversation = function (name) {
    return { name : name, messages : [], etc : {} };
};

var-conversations={};对话['5634576']={};对话['5634576']。姓名='frank'
多麻烦啊,您可以使用
检查第二步是否必要。。。。好吧,谢谢你!或
var对话={};对话['5634576']={name:'frank'}
。“真烦人。”:好吧,你期待什么?您正试图访问不存在的属性“5634576”的值。请阅读。但是,当用户收到一条新消息时,对象被重新创建,因此重写它。使用字符串示例,您无法看到它,但是,假设它是一个数组:这将是一个问题。@john:如果它不存在,只初始化对象/数组/无论什么。数组呢?如果我像这样实例化数组->
conversations['5634576'].messages=[];会话['5634576'].messages.push(消息)我将丢失以前的消息。我能阻止吗?
conversations['5634576']=conversations['5634576']|{;对话['5634576'].消息=对话['5634576'].消息| |[]
@john:只做
对话['5634576']
消息
尚未退出时。显然,当您分配一个新值时,您将丢失任何以前的值。@johnsmith如果您执行
推送
,则不会丢失以前的消息。