我正在从 API 中输入以下格式的信息 -
Records = { 0: {fields: {name: "nameExample" place: "placeExample"} }
{1: {fields: {name: "nameExample" place: "placeExample"} }
等等等等
我正在寻找一种方法来计算“地点”字段的重复项,格式为:苏格兰(4)、伦敦(6) 等,其中数字是重复的次数。
到目前为止,我得到的最接近的是计算每个地名中的字母,但我不确定我做错了什么。我认为如果我可以将它们放在同一个数组中,那么这会很简单,但是当我尝试这样做时,它会将每个位置放在不同的数组中。
还必须是普通的 javaScript,不能是 jQuery。非常感谢!
var URL = new Array();
URL[0] = "https://www.vam.ac.uk/api/json/museumobject/search?q=a&limit=45";
URL[1] = "https://www.vam.ac.uk/api/json/museumobject/search?q=a&limit=45&offset=45";
URL[2] = "https://www.vam.ac.uk/api/json/museumobject/search?q=a&limit=45&offset=90";
var nRequest = new Array();
for (var i=0; i<3; i++){
(function(i) {
nRequest[i] = new XMLHttpRequest();
nRequest[i].open("GET", URL[i], true);
nRequest[i].onreadystatechange = function (oEvent) {
if (nRequest[i].readyState === 4) {
if (nRequest[i].status === 200) {
var data = JSON.parse(nRequest[i].responseText);
var url = 'http://media.vam.ac.uk/media/thira/collection_images/';
for (let key in data.records) {
let value = data.records[key];
let image = value.fields.primary_image_id;
let res = image.substr(0, 6);
document.querySelector(".map").innerHTML += '<div class="' + value.fields.place + ' map"> <a href="map.html">' + value.fields.place + '</a> <br> </div>';
}
} else {
console.log("Error", nRequest[i].statusText);
}
}
//
};
nRequest[i].send(null);
})(i);
};
最佳答案
如果thats the data structure你可以这样解决:
const Records = [
{fields: {name: "nameExample", place: "placeExample"}},
{fields: {name: "nameExample", place: "placeExample"}}
];
const result = Records.reduce((acc, {fields}) => {
if(acc[fields.place]) acc[fields.place]++;
else acc[fields.place] = 1;
return acc;
}, {})
console.log(result);
关于javascript - 计算嵌套 Javascript 对象的重复属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60565526/