2015-12-21 3 views
-1

У меня есть массив Javascript, как показано нижекак искать в яваскрипт массиве

0: Object 
count: 2 
ids: Array[2] 
0: 2 
1: 3 
length: 2 
label_ncm: "Python" 

1: Object 
count: 1 
ids: Array[1] 
0: 3 
length: 1 
label_ncm: "C#" 

мой поиск сценария: ввод ID = 2,3, .. и т.д. чем мой вывод должен быть

{label:Python, count:2},{label:C#, count:1} 

2 (количество идентификаторов)

ввода ID = 2 , чем мой выход должен быть

{label:Python, count:1} 

2 является (количество идентификаторов)

, пожалуйста, кто-нибудь поможет, как достичь

Я попытался ниже код, но не получать ожидается.

var sm_js = [{"label_ncm":"Python","count":2,"ids":[2,3]},  {"label_ncm":"C#","count":1,"ids":[3]},{"label_ncm":"C# & Python","count":1,"ids":[3]}] 


for (var j = 0; j < gblresult_ncm[0]; j++) { 
    var ncm_sc_pid = gblresultToPie_ncm[0][j].P_pid; 
    $.each(sm_js , function (i, elem) { 
    for (var i = 0; i <= sm_js [i].ids.length; i++) { 

      var ncm_loc_s_cnt = gblresultToPie_ncm.length; 
      var ncm_sc_pid_sm = elem.ids[i]; 
      var ncm_sc_sname_sm = elem.label_ncm; 

      if (elem.ids[i] == ncm_sc_pid) { 
      return gblresultToPie_ncm_sc.push(elem.label_ncm + "1"); 
              } 
      else { 
      //alert("not found"); 
              } 
             } 
            }); 
           } 
+0

подсчет означает количество имущества или, как часто элемент в результате набор? –

+0

OP, вам нужно предоставить более четкий пример вашего массива. 'JSON.stringify (arr, null, 2)' должен дать вам хороший результат. – Andy

+0

спасибо за оба ответа .... – sen

ответ

0

Предполагая, что input является массивом.

var sm_js = [{ "label_ncm": "Python", "count": 2, "ids": [2, 3] }, { "label_ncm": "C#", "count": 1, "ids": [3] }, { "label_ncm": "C# & Python", "count": 1, "ids": [3] }], 
 
    input = [2, 3], 
 
    result = []; 
 

 
sm_js.forEach(function (a) { 
 
    input.some(function (b) { 
 
     if (~a.ids.indexOf(b)) { 
 
      result.push({ label: a.label_ncm, count: a.count }); 
 
      return true; 
 
     } 
 
    }); 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

0

Вот как я подошел бы к проблеме.

function getObj(arr, input) { 

    // create an array of integers from your input string 
    var len = input.split(/\s*,\s*/).map(Number); 

    // return each object in the input array 
    // that has where any of its ids are found 
    // in the search array 
    return arr.filter(function (el) { 
    return el.ids.some(function (item) { 
     return len.indexOf(item) > -1; 
    }); 

    // which we can then use `map` on to return only 
    // those key/value pairs that are required 
    }).map(function (el) { 
    return { label: el.label_ncm, count: el.count }; 
    }); 
} 

getObj(arr, '2'); // [{"label":"Python","count":2}] 
getObj(arr, '2,3'); // [{"label":"Python","count":2},{"label":"C#","count":1}] 

DEMO

Смежные вопросы