我有像下面这样的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");
}
}
});
}
答案 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}]
答案 1 :(得分: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>');
&#13;