2017-07-07 65 views
0

我必须比较一些JSON数据并返回位置索引。我使用纯JavaScript。纯JavaScript JSON比较数组

我有如下数据:

NAMES 
[ 
    { 
     "someName" : Name1, 
     "secondData" : "aaaa1", 
     "thirdData" : bbbb1 
    }, 
    { 
     "someName" : Name2, 
     "secondData" : "aaaa2", 
     "thirdData" : bbbb2 
    }, 
    { 
     "someName" : Name3, 
     "secondData" : "aaaa3", 
     "thirdData" : bbbb3 
    }, 
     { 
     "someName" : Name4, 
     "secondData" : "aaaa4", 
     "thirdData" : bbbb4 
    } 
] 

和JSON的席位

[ 
    { 
    "seats" : 0, 
    "someName" : "Name4", 
    omeData" : null, 
    "someData" : null 
    }, 
    { 
    "seats" : 1, 
    "someName" : "Name3", 
    "someData" : null, 
    "someData" : null 
    }, 
    { 
    "seats" : 2, 
    "someName" : "Name1", 
    "someData" : null, 
    "someData" : null 
    },  
    { 
    "seats" : 3, 
    "someName" : "Name2", 
    "someData" : null, 
    "someData" : null 
    } 
] 

所有我想要做的是比较这JSON是这样的:

Take someName from NAMES.someName and search the same name in SEATS.someName if is the same create new array RESULTS. Index in RESULTS array shuldbe SEATS.seats and data from NAMES. 

实例下

RESULTS[0] = NAMES[{"someName" : Name4,"secondData" : "aaaa4","thirdData" : bbbb4}] 
RESULTS[1] = NAMES[{"someName" : Name3,"secondData" : "aaaa3","thirdData" : bbbb3}] 
RESULTS[2] = NAMES[{"someName" : Name1,"secondData" : "aaaa1","thirdData" : bbbb1}] 
RESULTS[3] = NAMES[{"someName" : Name2,"secondData" : "aaaa2","thirdData" : bbbb2}] 

我开始做这个是这样,但我叠

for(i=0;i<=459; i++) { 
    if(mergeData[i][2] == jsonData[4].rows[i].find(compareElement)) { 
    } 
} 
function compareElement(element) { 
    return element.someName == i; 
} 

问题是,如果我用找到这样,我有一些错误,程序停止我不能这样如何解决这一发现。

+0

如果新数组的索引取自任意对象属性,则最终可能会生成一个稀疏数组。你可以吗? – Aron

回答

0
var result = []; 

NAMES.forEach(function(name) { 
    var found = SEATS.find(function(seat) { 
    return name.someName === seat.someName 
    }); 

    if (found) { 
    result[found.seats] = name; 
    } 
}); 
+0

谢谢!完美的工作! – breakbit