我正在尝试基于两个数据键值对在javascript中创建字典(我想使用一种分组方法)
我的数据有2个字段:名称(“保留”或“存储”)和月份名称字段:somedata = {name: "July", value:"reserved"}
现在,我想将相应的月份加到一个存储桶中,并将它们对应的每个组(保留或保存)加+1。
如何动态遍历数组中的对象,以键为月动态创建字典对象,然后每次输入相同的数据对象时值(或其他字段为保留字段)并递增+1?所以这基本上是一个按月分组的值对象...
在Python中,这非常简单:
ist_of_urls = ['http://www.google.fr/', 'http://www.google.fr/',
'http://www.google.cn/', 'http://www.google.com/',
'http://www.google.fr/', 'http://www.google.fr/',
'http://www.google.fr/', 'http://www.google.com/',
'http://www.google.fr/', 'http://www.google.com/',
'http://www.google.cn/']
urls = [{'url': 'http://www.google.fr/', 'nbr': 1}]
urls_d = {}
for url in list_of_urls:
if not url in urls_d:
urls_d[url] = 1
else:
urls_d[url] += 1
一个键的URL,但是我不知道如何用javascript中的两个键...
编辑:为了更加精确,我的任务是为ngx图表生成某种数据格式:
{name: "...", series: [{name:"..",value:".."},{...}]}
一些来自api的原始数据:
[
{
"Anzahl": 1,
"DemoID": 123456789,
"Monat": "August"
},
{
"Anzahl": 2,
"DemoID": 123456789,
"Monat": "April"
},
{
"Anzahl": 2,
"DemoID": 123456789,
"Monat": "Mai"
}
]
我以前做了12个月的时间:
docArray= [
{name: "Januar", series: []}, {name: "Februar", series: []}, {name: "Maerz", series: []}, {name: "April", series: []},
{name: "Mai", series: []}, {name: "Juni", series: []}, {name: "Juli", series: []}, {name: "August", series: []},
{name: "September", series: []}, {name: "Oktober", series: []}, {name: "November", series: []}, {name: "Dezember", series:[]}
]
对于堆积的条形图,我必须准备数据以使其适合数据模式并将其全部放入一个数组(“ docArray”)中:对于两种数据,我使用了两种不同的格式化方法(内部角度订阅方法;))
formatStackedBarChartReservierungen(data: any[]){
for (var dok of data) {
for (var j = 0; j< this.docArray.length; j++) {
if (this.docArray[j].name == dok.name){
var newDok = {name: "Reservierungen", value: dok.value} ;
this.docArray[j].series.push(newDok);
}
}
}
return this.docArray;
}
formatStackedBarChartStornierungen(data:any[]){
for (var dok of data) {
for (var j = 0; j< this.docArray.length; j++) {
if (this.docArray[j].name == dok.name){
var newDok = {name: "Stornierungen", value: dok.value} ;
this.docArray[j].series.push(newDok);
}
}
}
return this.docArray;
}
最后,我想得到这样的东西:
exampleTestData= [{name: "Januar", series: [{name: "Reserviert", value: 2}, {name: "Storniert", value: 8}]},
{name: "Mai", series: [{name: "Reserviert", value: 5}, {name: "Storniert", value: 3}]} ]
这种方法对我来说看起来非常繁琐,如果数组中有100或1000个不同的值或未知数呢??
答案 0 :(得分:1)
以下是您的Python示例的JS类似物:
const urls_d = {};
for (const url of list_of_urls) {
if (urls_d[url]) {
urls_d[url]++;
} else {
urls_d[url] = 1;
}
}
答案 1 :(得分:0)
要进行计数,可以使用一个对象并使用默认值(如果在该对象中找不到该网址)。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="parent">
<div id="child" contenteditable="true">Long text
coming here
and here</div>
</div>