Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 包含其他数组的已计数项的数组_Javascript_Arrays - Fatal编程技术网

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

我有一个数组,在这个数组中将保存一个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"
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数组,以便您也可以检查它。