2016-10-10 6 views
-1

私はいくつかのデータを持っており、フィールドの1つはタグと呼ばれ、inは値の配列を含むことがあります。配列のJavaScriptカウント値

私がする必要があるのは、これらの値を数えてそれらを別々の変数にすることです。ここで

はデータです:

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" 

     } 
    ] 
} 

]; 

そして、これは私がで終わるために必要なものです:

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

はどうすればこれを行うことができますか?

+3

配列とcontを繰り返します。あなたが特定の問題を抱えたら、それに戻りましょう – k102

答えて

1

あなたはこのよう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)

1

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);

0

単に、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++; 
}