Я пытался объединить количество имен названий и из разных источников заголовков. Мне удавалось удалять дубликаты из массива объектов и отображать только оригинальную версию заголовка из каждого источника только один раз без каких-либо дубликатов. Но мне не удалось показать подробно, сколько дубликатов названий названий было в json. Как здесь, у нас есть по 4 от каждого. Но я не смог получить полное дублирование. Часть - это состояние else
ifExistFlag
, которое Ive добавил в код. Я также добавить ссылку скрипкунахождение числа вхождений той же строки, хранящейся в массиве объектов
var inputJson = [{
"Sources": [{
"title": "Title Name",
"source": "SourceName1",
"date": "07-05-2013 00:38:40",
"link": "Link to 1"
}, {
"title": "Title Name",
"date": "07-05-2013 00:24:17",
"source": "SourceName2",
"link": "Link to 2"
}
]
}, {
"Sources": [{
"title": "Title Name",
"source": "SourceName1",
"date": "07-05-2013 00:38:40",
"link": "Link to 1"
}, {
"title": "Title Name",
"date": "07-05-2013 00:24:17",
"source": "SourceName2",
"link": "Link to 2"
}
]
}, {
"Sources": [{
"title": "Title Name",
"source": "SourceName1",
"date": "07-05-2013 00:38:40",
"link": "Link to 1"
}, {
"title": "Title Name",
"date": "07-05-2013 00:24:17",
"source": "SourceName2",
"link": "Link to 2"
}
]
}, {
"Sources": [{
"title": "Title Name",
"source": "SourceName1",
"date": "07-05-2013 00:38:40",
"link": "Link to 1"
}, {
"title": "Title Name",
"date": "07-05-2013 00:24:17",
"source": "SourceName2",
"link": "Link to 2"
}
]
}
]
$(document).ready(function() {
var sourceList = AggregateSource(inputJson);
var sourcePrint = printFinalSourceData(sourceList);
$("#output").html(sourcePrint);
});
function AggregateSource(sourceArray, number) {
var l = {};
var finalArray = [];
for (var i = 0; i < sourceArray.length; i++) {
for (var j = 0; j < sourceArray[i].Sources.length; j++) {
if (l.hasOwnProperty(sourceArray[i].Sources[j].source) == false) {
l[sourceArray[i].Sources[j].source] = [];
var m = {};
m["title"] = sourceArray[i].Sources[j].title;
m["link"] = sourceArray[i].Sources[j].link;
m["date"] = sourceArray[i].Sources[j].timeStamp;
m["count"] = 1;
l[sourceArray[i].Sources[j].source].push(m);
} else {
var ifExistFlag = true;
for (var k = 0; k < l[sourceArray[i].Sources[j].source].length; k++) {
if (l[sourceArray[i].Sources[j].source][k]["title"] == sourceArray[i].Sources[j].title) {
ifExistFlag = false;
}
}
if (ifExistFlag == true) {
m["title"] = sourceArray[i].Sources[j].title;
m["date"] = sourceArray[i].Sources[j].timeStamp;
m["link"] = sourceArray[i].Sources[j].link;
l[sourceArray[i].Sources[j].source].push(m);
} else {
// alert(l[sourceArray[i].Sources[j].source][j]["count"])
}
}
}
}
finalArray.push(l);
return finalArray;
}
function printFinalSourceData(inputArray) {
var sourceHTML = '';
for (var k = 0; k < inputArray.length; k++) {
for (key in inputArray[k]) {
for (var i = 0; i < inputArray[k][key].length; i++) {
sourceHTML += "<span style='width:80%; float:left; font-size:14px;'><a href='" + inputArray[k][key][i].link + "' target='_blank' style='text-decoration:none; color:#333333; font-weight:bold;'>" + inputArray[k][key][i].title + "</a></span><br><span style='width:80%;float:left; font-size:10px; color: #3f4041;'>" + key.split("_").join(" "); + "</span><br>";
}
}
}
return sourceHTML;
}
'inputJson' - это _not_ JSON! Это массив объектов, определенных с использованием синтаксиса литералов объекта javascript. JSON представляет собой * строку * представление объектов javascript. –