-1

有史以来最简单的问题,我还没有找到正确的答案。

得到对象列表:object_list = {}

得到对象:object_x = {...}

object_x我该如何添加object_list[objects_x]

我试过:object_list[objects_x][object_list[objects_x].length] = object_x,但object_list[objects_x].length未定义。

push()也不起作用。

我真的需要为此定义外部计数器吗?

请不要说我的意思是对象列表列表。注意 和 之间的objects_x区别object_x

没有像 PHP 这样简单的解决方案$array['something'][] = $somedata吗?

4

4 回答 4

2
object_list['object_x'] = object_x;
// or
object_list.object_x = object_x;

console.log(object_list.object_x === object_list['object_x'])

如何使用对象 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

于 2013-09-01T12:01:31.370 回答
1

当您创建一个类似的变量时var stuff = {},您正在创建一个空对象文字,它除了从Object. 如果您想保留存储在此对象的各种列表中的对象,您需要首先创建这些列表。

var stuff = { shelves: [], selectors: [], images: [], additional: [] };

现在,您可以根据需要将任何您想要的内容添加到这些列表中。

var image = { src: '/path/to/image.jpg' };
stuff.images.push(image);

stuff只需将新属性设置为 on ,您就可以随时添加更多列表stuff

stuff.some_other_list = []

希望能帮助到你。

于 2013-09-01T12:45:28.033 回答
0

如果你有兴趣使用对象,而不是数组,你可以这样使用:

var object_list = {};
var object_x = {'prop1':'val1'};

// add object
object_list.myobj = object_x;

// for access, same scheme.
object_list.myobj.prop1 = 'valX';

// for loop thru    
for (var key in object_list) {
   var obj = object_list[key];
   obj.prop1 = 'valY';
}
于 2013-09-01T12:10:54.190 回答
0

你的基本假设是错误的。

这个:

var object_list = {}

不是一个列表。它不是一个数组,你不能通过索引引用它的项目,因此它也没有.length属性。

你所追求的是一个普通的数组:

var object_list = [];

现在您可以将项目推入其中:

object_list.push(object_x);

编辑:根据您的评论和编辑,我认为您真正追求的是几个辅助功能:

function AddToList(list, item) {
    var counter = 0;
    for (var key in list)
        counter++;
    var key = "item_index_" + counter;
    list[key] = item;
}

function GetItemByIndex(list, index) {
    var counter = 0;
    var existingKey = "";
    for (var key in list) {
        if (counter == index) {
            existingKey = key;
            break;
        }
        counter++;
    }
    return (existingKey.toString().length > 0) ? list[existingKey] : null;
}

有了这些,您现在可以拥有这样的代码:

var mainList = {};
var newItem = { "foo": "bar" };
AddToList(mainList, newItem);
var dummy = GetItemByIndex(mainList, 0)["foo"]; //will contain "bar"

现场测试用例

于 2013-09-01T12:04:43.390 回答