简体   繁体   English

数组上的Javascript计数值

[英]Javascript count values on array

I have some data and one of the fields is called tags and in will sometimes contain an array of values. 我有一些数据,并且其中一个字段称为标签,并且其中有时会包含值数组。

What I need to do is to count those values and get them into separate variables. 我需要做的是计算这些值并将它们放入单独的变量中。

Here is the data: 数据如下:

myObject = [

{
"object": [
        {
            "id": "8062",
            "name": "name 1"
            "tags": ['tag1','tag2'],
            "desc": "desc 1",
        },
        {
            "id": "8061",
            "name": "name 2"
            "tags": ['tag 2', 'tag 3'],
            "desc": "desc 2"

        },
        {
        "id": "8060",
        "name": "name 3"
        "tags": ['tag 2', 'tag 3'],
        "desc": "desc 3"

        }
    ]
}

];

And this is what I need to end up with: 这就是我需要结束的:

tag1_count = 1;
tag2_count = 3;
tag3_count = 2;

How can I do this? 我怎样才能做到这一点?

 myObject = [{ "object": [{ "id": "8062", "name": "name 1", "tags": ['tag1', 'tag2'], "desc": "desc 1" }, { "id": "8061", "name": "name 2", "tags": ['tag2', 'tag3'], "desc": "desc 2" }, { "id": "8060", "name": "name 3", "tags": ['tag2', 'tag3'], "desc": "desc 3" }] }]; var map = {}; myObject[0].object.forEach(function(object) { object.tags.forEach(function(tag) { if(map[tag] === undefined){ map[tag] = 1; }else{ map[tag] = map[tag] + 1; } }); }); console.log(map); 

You can use reduce() like this and return object. 您可以像这样使用reduce()并返回对象。

 var myObject = [{ "object": [{ "id": "8062", "name": "name 1", "tags": ['tag1', 'tag2'], "desc": "desc 1", }, { "id": "8061", "name": "name 2", "tags": ['tag 2', 'tag 3'], "desc": "desc 2" }, { "id": "8060", "name": "name 3", "tags": ['tag 2', 'tag 3'], "desc": "desc 3" }] }]; var result = myObject[0].object.reduce(function(r, e) { e.tags.forEach(function(t) { var key = t.replace(/ /g, '') + '_count' r[key] = (r[key] || 0) + 1; }) return r; }, {}) console.log(result) 

Simply iterate through the array using for-of loop, get each length of tags property and store each desired value to different variables. 使用for-of循环简单地遍历数组,获取tags属性的每个长度,并将每个期望的值存储到不同的变量中。

var i = 1;
for (obj of myObject[0].object) {
    window["tag" + i + "_count"] = obj.tags.length; // e.g. tag1_count = 2, tag2_count = 3, etc...
    i++;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM