Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Javascript二维数组进行过滤_Javascript_Jquery_Arrays_2d - Fatal编程技术网

通过Javascript二维数组进行过滤

通过Javascript二维数组进行过滤,javascript,jquery,arrays,2d,Javascript,Jquery,Arrays,2d,我有一个这样的2d数组 var items = [['alex',2],['alex',4],['alex',6],['jhon',11],['jhon',13]]; 但是在html中,我想将这个数组呈现为 **Names** **Numbers** alex => 2,4,6 jhon => 11,13 您可以使用reduce()返回对象,然后使用object.keys()和forEach循环添加到HTML var项=[[alex',2],[alex'

我有一个这样的2d数组

 var items = [['alex',2],['alex',4],['alex',6],['jhon',11],['jhon',13]];
但是在html中,我想将这个数组呈现为

**Names**   **Numbers**

  alex   => 2,4,6
  jhon   => 11,13
您可以使用
reduce()
返回对象,然后使用
object.keys()
forEach
循环添加到HTML

var项=[[alex',2],[alex',4],[alex',6],[jhon',11],[jhon',13];
var结果=项目。减少(功能(r,e){
r[e[0]=(r[e[0]| |[])。concat(e[1]);
返回r;
}, {});
var行=“”;
Object.keys(结果).forEach(函数(e){
行+=''+e+''+result[e]。连接(',')+'';
});
document.querySelector('table tbody')。innerHTML+=行

名称编号

我没有使用reduce和数组分组,而是提出了一种jQuery方法(这不是最好的解决方案,只是从不同的角度):

$(函数(){
var项目=[['alex',2],'alex',4],'alex',6],'jhon',11],'jhon',13];
$.each(项、函数(索引数组、值){
var cellIfExist=$('#result').find('td:contains('+value[0]+'));
如果(cellIfExist.length>0){
cellIfExist.next().text(cellIfExist.next().text()+','+值[1]);
}否则{
$('#result')。追加(''+value[0]+''+value[1]+'')
}
});
});

**名字**
**数字**

传统的方法可能是在数组上迭代,同时构建一个非常类似于关联数组的对象

 var items = [['alex',2],['alex',4],['alex',6],['jhon',11],['jhon',13]];
 var group = { }

 for(var i = 0; i < items.length; i++) {
    var pair = items[i];
    if(group[pair[0]]) {
    group[pair[0]].push(pair[1]);
  }
 else {
    group[pair[0]] = [pair[1]];
  }
}
var项=[[alex',2],[alex',4],[alex',6],[jhon',11],[jhon',13];
变量组={}
对于(变量i=0;i

“组”就是您的分组对象。使用for循环对其进行迭代。

使用
数组的简单解决方案。forEach
函数:

var items=[['alex',2],'alex',4],'alex',6],'jhon',11],'jhon',13],
名称={};
项目。forEach(功能(arr){
(名称[arr[0]])?名称[arr[0]]。推送(arr[1]):(名称[arr[0]]=[arr[1]]);
});

log(JSON.stringify(name,0,4))请分享您已经尝试过的内容。正确的术语是分组。我不是JavaScript 2d数组方面的专家。我不知道如何才能做到这一点。我在过去的两个小时里一直在尝试。我在谷歌上搜索,我只找到了删除重复项,但不知道如何应用。请给出一个例子。感谢回复。非常感谢。完美。这是我需要什么谢谢我需要jquery版本:)