Javascript 如何计算重复项目的计数以及状态

Javascript 如何计算重复项目的计数以及状态,javascript,jquery,Javascript,Jquery,我要计算每个名称的“已找到”和“未找到”的计数 _dataDetails = { name : test1 , status : found, other : [] } { name : test1 , status : found, other : [] } { name : test1 , status : Not found, other : [] } { name : test2 , status :

我要计算每个名称的“已找到”和“未找到”的计数

_dataDetails = {
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : Not found,
    other : []
}
{
    name : test2 ,
    status : found,
    other : []
}etc ........
五月码

For example:
test1 
found:2
notfound :1

test2 
found:1
notfound :0
var\u data=[]
var指数=-1;
对于(var\u i=0;\u i<\u data.length;\u i++)
{
如果(\u data[\u i][0]=\u dataDetails[i].name){index=\u i;}
}
如果(索引>=0)
{
如果(_dataDetails[i].status=='found')
{
_数据[索引][1][0]+;
}
其他的
{
_数据[索引][1][1]+;
}
}
其他的
{
如果(_dataDetails[i].result=='Detected')
{
_data.push([[u dataDetails[i].name[1,0]]);
}
其他的
{
_data.push([[u dataDetails[i].name[0,1]]);
}
}
在这里,我得到了双倍的计数(而不是10它会给20)。请建议

您可以这样编写代码

var _data = []
var index = -1;
for ( var _i = 0; _i < _data.length; _i++ )
{
    if ( _data[_i][0] == _dataDetails[i].name ) { index = _i; }
}


if ( index >= 0 )
{
    if ( _dataDetails[i].status == 'found' )
    {
        _data[index][1][0]++;
    }
    else
    {
        _data[index][1][1]++;
    }
}
else
{
    if ( _dataDetails[i].result == 'Detected' )
    {
        _data.push([_dataDetails[i].name, [1, 0]]);
    }
    else
    {
        _data.push([_dataDetails[i].name, [0, 1]]);
    }
}
您可以这样编写代码

var _data = []
var index = -1;
for ( var _i = 0; _i < _data.length; _i++ )
{
    if ( _data[_i][0] == _dataDetails[i].name ) { index = _i; }
}


if ( index >= 0 )
{
    if ( _dataDetails[i].status == 'found' )
    {
        _data[index][1][0]++;
    }
    else
    {
        _data[index][1][1]++;
    }
}
else
{
    if ( _dataDetails[i].result == 'Detected' )
    {
        _data.push([_dataDetails[i].name, [1, 0]]);
    }
    else
    {
        _data.push([_dataDetails[i].name, [0, 1]]);
    }
}
您可以这样编写代码

var _data = []
var index = -1;
for ( var _i = 0; _i < _data.length; _i++ )
{
    if ( _data[_i][0] == _dataDetails[i].name ) { index = _i; }
}


if ( index >= 0 )
{
    if ( _dataDetails[i].status == 'found' )
    {
        _data[index][1][0]++;
    }
    else
    {
        _data[index][1][1]++;
    }
}
else
{
    if ( _dataDetails[i].result == 'Detected' )
    {
        _data.push([_dataDetails[i].name, [1, 0]]);
    }
    else
    {
        _data.push([_dataDetails[i].name, [0, 1]]);
    }
}
您可以这样编写代码

var _data = []
var index = -1;
for ( var _i = 0; _i < _data.length; _i++ )
{
    if ( _data[_i][0] == _dataDetails[i].name ) { index = _i; }
}


if ( index >= 0 )
{
    if ( _dataDetails[i].status == 'found' )
    {
        _data[index][1][0]++;
    }
    else
    {
        _data[index][1][1]++;
    }
}
else
{
    if ( _dataDetails[i].result == 'Detected' )
    {
        _data.push([_dataDetails[i].name, [1, 0]]);
    }
    else
    {
        _data.push([_dataDetails[i].name, [0, 1]]);
    }
}

你可以这样做

var _dataDetails = [{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : Not found,
    other : []
}
{
    name : test2 ,
    status : found,
    other : []
}];

var counter = {};

for(index in _dataDetails) {
    var dt = _dataDetails[index];
    if(counter[dt.name]) {
        counter[dt.name] += 1;
    } else {
        counter[dt.name] = 1;
    }
}
console.log(counter);

请参见此处:

您可以这样做

var _dataDetails = [{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : Not found,
    other : []
}
{
    name : test2 ,
    status : found,
    other : []
}];

var counter = {};

for(index in _dataDetails) {
    var dt = _dataDetails[index];
    if(counter[dt.name]) {
        counter[dt.name] += 1;
    } else {
        counter[dt.name] = 1;
    }
}
console.log(counter);

请参见此处:

您可以这样做

var _dataDetails = [{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : Not found,
    other : []
}
{
    name : test2 ,
    status : found,
    other : []
}];

var counter = {};

for(index in _dataDetails) {
    var dt = _dataDetails[index];
    if(counter[dt.name]) {
        counter[dt.name] += 1;
    } else {
        counter[dt.name] = 1;
    }
}
console.log(counter);

请参见此处:

您可以这样做

var _dataDetails = [{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : found,
    other : []
}
{
    name : test1 ,
    status : Not found,
    other : []
}
{
    name : test2 ,
    status : found,
    other : []
}];

var counter = {};

for(index in _dataDetails) {
    var dt = _dataDetails[index];
    if(counter[dt.name]) {
        counter[dt.name] += 1;
    } else {
        counter[dt.name] = 1;
    }
}
console.log(counter);



请参见此处:

dataDetails如何成为有效数组?这是一个语法错误。@raghavendra对象之间缺少逗号。除此之外,这会很好的。@Rorymcrossan是的。虽然for in可以被设计用于在ArrayStanks上迭代的内容所取代,但我想要的是find和not find的计数,而不仅仅是namesfor example test1 found:2 notfound:1我可以使用上面的代码得到它,但不知怎的,它显示了doubledHow _dataDetails是一个有效的数组吗?这是一个语法错误。@raghavendra对象之间缺少逗号。除此之外,这会很好的。@Rorymcrossan是的。虽然for in可以被设计用于在ArrayStanks上迭代的内容所取代,但我想要的是find和not find的计数,而不仅仅是namesfor example test1 found:2 notfound:1我可以使用上面的代码得到它,但不知怎的,它显示了doubledHow _dataDetails是一个有效的数组吗?这是一个语法错误。@raghavendra对象之间缺少逗号。除此之外,这会很好的。@Rorymcrossan是的。虽然for in可以被设计用于在ArrayStanks上迭代的内容所取代,但我想要的是find和not find的计数,而不仅仅是namesfor example test1 found:2 notfound:1我可以使用上面的代码得到它,但不知怎的,它显示了doubledHow _dataDetails是一个有效的数组吗?这是一个语法错误。@raghavendra对象之间缺少逗号。除此之外,这会很好的。@Rorymcrossan是的。虽然for in可以被设计用于在ArrayShanks上迭代的东西所取代,但我想要的是found和not found的计数,不仅仅是namesfor example test1 found:2 notfound:1我可以使用上面的代码得到它,但不知怎的,它显示了doubledThanks,这也为我提供了与真实数据相同的结果,所以这可能是另一个问题,我们的两个代码功能相似,非常感谢much@prash嗯,如果真实数据不敏感的话,你能发布它吗?我的意思是逻辑是正确的,可能是其他数据问题,与我们的代码无关seems@prash你从哪里得到数据?你怎么知道它翻了一倍?也许数据被复制了?如果没有看到数据,我不能说太多。我通过在DB中运行脚本来检查计数,可能是脚本错误。这也为我提供了与真实数据相同的结果,因此可能是其他问题。我们的两个代码功能相似,非常感谢much@prash嗯,你能发布真实的数据吗,如果它不敏感。我的意思是逻辑是正确的,它可能是其他一些数据问题,与我们的代码无关seems@prash你从哪里得到数据?你怎么知道它翻了一倍?也许数据被复制了?如果没有看到数据,我不能说太多。我通过在DB中运行脚本来检查计数,可能是脚本错误。这也为我提供了与真实数据相同的结果,因此可能是其他问题。我们的两个代码功能相似,非常感谢much@prash嗯,你能发布真实的数据吗,如果它不敏感。我的意思是逻辑是正确的,它可能是其他一些数据问题,与我们的代码无关seems@prash你从哪里得到数据?你怎么知道它翻了一倍?也许数据被复制了?如果没有看到数据,我不能说太多。我通过在DB中运行脚本来检查计数,可能是脚本错误。这也为我提供了与真实数据相同的结果,因此可能是其他问题。我们的两个代码功能相似,非常感谢much@prash嗯,你能发布真实的数据吗,如果它不敏感。我的意思是逻辑是正确的,它可能是其他一些数据问题,与我们的代码无关seems@prash你从哪里得到数据?你怎么知道它翻了一倍?也许数据被复制了?如果不查看数据,我不能说太多。我通过在DB中运行脚本来检查计数,可能是脚本错误