如何使用JavaScript/jquery在多维数组中仅获取唯一项?
例如,我得到了一个具有2维的多维数组项。 我从一个数据库中得到这个数组,但它将填充2600多个对象,但如果我能了解它的独特性,它将是大约30个对象。如何解决这个问题 设置为: 我如何获得信息:如何使用JavaScript/jquery在多维数组中仅获取唯一项?,javascript,jquery,multidimensional-array,unique,Javascript,Jquery,Multidimensional Array,Unique,例如,我得到了一个具有2维的多维数组项。 我从一个数据库中得到这个数组,但它将填充2600多个对象,但如果我能了解它的独特性,它将是大约30个对象。如何解决这个问题 设置为: 我如何获得信息: $.getJSON(url1,function(data1) { for (var i in data1.layers){ $.each(data1.layers[i].legend, function( a, b ) { for(var a in data
$.getJSON(url1,function(data1)
{
for (var i in data1.layers){
$.each(data1.layers[i].legend, function( a, b ) {
for(var a in data1.layers[i].legend[a]){
$.each(data1.layers[i].legend, function( key, val ){
items.push({label: val.label, url: "long link" + val.url});
});
};
});
};
items[0].label
items[0].url
items[1].label
items[1].url
等等
我在php中找到了另一个stackoverflow页面,但我无法在JavaScript/JQuery中使用它。
首先将它们推到阵列上是一个错误。您应该创建一个关联数组,其中键字段是唯一的方面。使用字典查看您已经拥有的项目:
var dict = {};
$.getJSON(url1,addToLocalArray);
function addToLocalArray(data1){
for (var i in data1.layers){
$.each(data1.layers[i].legend, function( a, b ) {
for(var a in data1.layers[i].legend[a]){
$.each(data1.layers[i].legend, function( key, val ){
if(!dict[val.url+'-'+val.label]){
// or create some sort of unique hash for each element...
dict[val.url+'-'+val.label] = 1;
items.push({label: val.label, url: "long link" + val.url});
}
});
}
});
}
}
我建议: A) 将唯一性筛选逻辑推送到数据库。它在这方面效率更高,并且不需要彻底的迭代
B) 每个独特的物品都有一个钥匙(如vogomatix建议的) 实际上,这看起来像一个对象数组。您需要显示数据来自何处以及如何构建阵列。哪些部分是唯一的?2600个标签和URL都是相似的,还是只有30个不同的URL有很多标签?@Juhana i添加了items数组的信息@vogomatix将获得约30个不同的标签和URL,但它将在阵列中“克隆”它们。如果你能接触服务器端,我同意此解决方案。这正是我想要的。谢谢,但我必须承认,如果我可以在服务器端更改内容,我会这样做。