Javascript 包含其他数组的已计数项的数组
我有一个数组,在这个数组中将保存一个JavaScript对象Javascript 包含其他数组的已计数项的数组,javascript,arrays,Javascript,Arrays,我有一个数组,在这个数组中将保存一个JavaScript对象 var items = []; var item = { id: data.id, kategorie: data.kategorie, name: data.name } items.push(item); // that will be done few times 现在我有这样的东西 items[0] = id: 1, kategorie: "scheduled", name: "Test1
var items = [];
var item = {
id: data.id,
kategorie: data.kategorie,
name: data.name
}
items.push(item); // that will be done few times
现在我有这样的东西
items[0] = id: 1, kategorie: "scheduled", name: "Test1"
items[1] = id: 2, kategorie: "queued", name: "Test2"
items[2] = id: 3, kategorie: "recorded", name: "Test3"
items[3] = id: 4, kategorie: "recorded", name: "Test4"
items[4] = id: 5, kategorie: "recorded", name: "Test5"
我要数一数这个数组。至少最终的数组应该是这样的
arrayFinal[0] = kategorie: "scheduled", counted: 1
arrayFinal[1] = kategorie: "recorded", counted: 3
我是如何做到的?如果您熟悉linq,可以编写查询。按kategorie分组,计算ID 例如:
如果您熟悉linq,可以编写查询。按kategorie分组,计算ID 例如:
这不会产生准确的输出,但会让您知道该怎么做:
var items = [],
arrayFinal = [];
items[0] = {
id: 1,
kategorie: "scheduled",
name: "Test1"
};
items[1] = {
id: 2,
kategorie: "queued",
name: "Test2"
};
items[2] = {
id: 3,
kategorie: "recorded",
name: "Test3"
};
items[3] = {
id: 4,
kategorie: "recorded",
name: "Test4"
};
items[4] = {
id: 5,
kategorie: "recorded",
name: "Test5"
};
items.forEach(function (v, i) {
if (typeof arrayFinal[v.kategorie] === 'undefined') {
arrayFinal[v.kategorie] = 1;
} else {
arrayFinal[v.kategorie] += 1;
}
});
这不会产生准确的输出,但会让您知道该怎么做:
var items = [],
arrayFinal = [];
items[0] = {
id: 1,
kategorie: "scheduled",
name: "Test1"
};
items[1] = {
id: 2,
kategorie: "queued",
name: "Test2"
};
items[2] = {
id: 3,
kategorie: "recorded",
name: "Test3"
};
items[3] = {
id: 4,
kategorie: "recorded",
name: "Test4"
};
items[4] = {
id: 5,
kategorie: "recorded",
name: "Test5"
};
items.forEach(function (v, i) {
if (typeof arrayFinal[v.kategorie] === 'undefined') {
arrayFinal[v.kategorie] = 1;
} else {
arrayFinal[v.kategorie] += 1;
}
});
如果你想一想,做一个实验,你就会这么做
kategorieCount
项
。如果存在kategorieCount[items[i].name]
递增,如果没有,则在i
处创建元素,然后递增值arrayFinal
kategorieCount
。将键放入arrayFinal[i]。kategorie
中,并将值放入arrayFinal[i]。counted
如果你想一想,做一个实验,你就会这么做
kategorieCount
项
。如果存在kategorieCount[items[i].name]
递增,如果没有,则在i
处创建元素,然后递增值arrayFinal
kategorieCount
。将键放入arrayFinal[i]。kategorie
中,并将值放入arrayFinal[i]。counted
var项目=[
{id:1,kategorie:“预定”,名称:“Test1”},
{id:2,kategorie:“排队”,name:“Test2”},
{id:3,kategorie:“录制”,名称:“Test3”},
{id:4,kategorie:“录制”,名称:“Test4”},
{id:5,kategorie:“录制”,名称:“Test5”}
];
var指数,
arrayFinal=[];
arrayFinal.contains=函数(kategorie){
对于(变量i=0,len=arrayFinal.length;i
var项目=[
{id:1,kategorie:“预定”,名称:“Test1”},
{id:2,kategorie:“排队”,name:“Test2”},
{id:3,kategorie:“录制”,名称:“Test3”},
{id:4,kategorie:“录制”,名称:“Test4”},
{id:5,kategorie:“录制”,名称:“Test5”}
];
var指数,
arrayFinal=[];
arrayFinal.contains=函数(kategorie){
对于(变量i=0,len=arrayFinal.length;i
查看Underline.js的\uu.countBy
例程:
counts = _.countBy(items, "kategorie");
这将创建一个如下所示的对象:
{
recorded : 3,
...
}
要将其转换为数组格式,需要.map
:
arrayFinal = _.map(counts, function(v,k){
return {kategorie: k, counted: v};
});
完成了。查看underline.js的
\uu.countBy
例程:
counts = _.countBy(items, "kategorie");
这将创建一个如下所示的对象:
{
recorded : 3,
...
}
要将其转换为数组格式,需要.map
:
arrayFinal = _.map(counts, function(v,k){
return {kategorie: k, counted: v};
});
好了,你完成了。它返回了我所有计数为1的项目。我刚刚用你提供的
项目数组在控制台中进行了尝试,“录制的”
有3个计数的项目。我将添加items数组,以便您也可以检查它。它返回我所有计数为1的项目。我刚刚在控制台中使用您提供的items
数组尝试了它,并且“recorded”
计数为3。我将添加items数组,以便您也可以检查它。