查找数组中的对象(具有属性的自定义对象)

时间:2010-12-13 16:41:08

标签: javascript

我试图找出是否有更好的方法来做我在这里做的事情。

我构建了一个customColumn对象,它有一些属性,比如ID和Title等......

即。我的cusColum =新的aColumn('321','Todds Column');

然后将所有这些列放入一个数组中 - 所以这个数组包含对象而不是简单的值。

所以我这样做是为了在我的数组中找到一个特定的对象:

var len = columnObjects.length;
    for (var i = 0; i < len; i++) {
        if (columnObjects[i].colID == id) {
            columnObjects.splice(i, 1);
            break;
        }      

拼接只是我对这些对象做的一件事......我很乐意能够使用IndexOf函数,但不知道我会怎么写它或者它是否可能......

2 个答案:

答案 0 :(得分:2)

一种可能的解决方案是使用关联数组来存储columnObjects。填充数组时,您可以执行以下操作:

var columnObjects = {};

// your probably populating in a loop
columnObjects['321'] = new aColumn('321', 'Todds Column');

然后,当你想通过id获得一个对象时,你会说:

columnObjects[id];

您还可以使用关联数组对同一对象使用多个键:

var id = '321';
var owner = 'Todds Column';
var column = new aColumn(id, owner);
columnObjects[id] = column;
columnObjects[owner] = column;

我可以想到其他一些解决方案,但这是我想到的第一个解决方案。

答案 1 :(得分:0)

您可以使用Linq

var objectsFound = Enumerable.From(columnObjects).Where(function (x) {
                    return x.colID === id}).FirstOrDefault(null);

if (objectsFound)
  do something....