如何在javascript数组中搜索

时间:2015-12-21 16:49:38

标签: javascript

我有像下面这样的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是(ids的数量)

输入id = 2 我的输出应该是

{label:Python, count:1} 

2是(ids的数量)

请帮助一些人如何实现

我尝试过以下代码,但没有得到预期。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

假设input是一个数组。

&#13;
&#13;
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>');
&#13;
&#13;
&#13;