0

我有一个小函数,可以将返回的结果添加到对象列表中,但我遇到的问题是,如果有某个重复,它将不允许它 - 但有些方面会发生重复,而其他方面则不会......

我将通过示例更好地解释:

var data = {"24":{"16":["172"],"15":["160"]}}

此数据列表转换为:

var data = {"X":{"Y":["id"],"Y":["id"]}};

现在我试图插入这样的新数据:

    for(var key in result){              
      if(result.hasOwnProperty(key)){  
      data[key] = result[key];     
        }
    }

如果考虑网格坐标,在我的对象列表中,Y 不能在同一个 X 中复制,X 根本不能复制。

这是我试图插入的“结果”示例数据:

{24: {13:[187]}}

从而将 var 数据转换为:

var data = {"24":{"16":["172"],"15":["160"],"13":["187"]}};

有谁知道我如何为我的循环实施重复检查?

4

1 回答 1

1
// Declare this temporary object we'll use later
var obj = {}

for ( var key in result ){              
    if ( result.hasOwnProperty( key ) ) {
        // If the key already exists
        if ( data[ key ] === result[ key ] ) {

            // Empty the temporary object
            obj = {}
            // Loop through the subkeys
            for ( var subkey in result[ key ] ) {              
                if ( result[ key ].hasOwnProperty( [ subkey ] ) ) {

                    // Fill in the temporary object
                    obj[ subkey ] = result[ key ][ subkey ]
                }
            }

            // Add the new object to the original object
            data[ key ] = obj
        }

        // If the key doesn't exist, do it normally
        else {
            data[ key ] = result[ key ]
        }
    }
}

// Now, to be tedious, let's free up the memory of the temporary object!
obj = null

像这样的东西应该工作。如果发生冲突,我会重建内联对象,以便可以将其与所有原始和新键/值一起添加回来。

PS:最后一行纯属娱乐。

于 2012-04-24T17:10:42.327 回答