我有一个小函数,它将返回的结果添加到对象列表中,但我遇到的问题是,如果存在某些重复,它将不允许它 - 但是在某些方面会发生重复,而其他方面则不会...
我会用例子更好地解释:
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"]}};
有没有人知道如何为我的循环实施重复检查?
答案 0 :(得分: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:最后一行只是为了好玩。