JS数据分组

JS对数据进行分组_js数据分组_柳宁依的博客-CSDN博客

原理没看懂,增加分组显示数据部分。

<html>
<head>
<style>
select { display: block; margin: auto; }
table { border-collapse: collapse; margin: auto; }
th, td { border: 1px solid black; padding:10px; text-align: center; }
</style>
</head>
<body>
<select id="select"></select><br>
<table id="table"></table>
<script>
var select = document.getElementById('select');
var table = document.getElementById('table');

let data = [
    { key: 'xxx', name: 'yiyi', age: 12, money: 10 },
    { key: 'sss', name: 'iii', age: 13, money: 100 },
    { key: 'ddd', name: 'ooo', age: 13, money: 50 },
    { key: 'sss', name: 'mmm', age: 50, money: 90 },
    { key: 'ddd', name: '888', age: 13, money: 88 },
    { key: 'aaa', name: 'qqq', age: 30, money: 78 },
    { key: 'aaa', name: 'qqq', age: 13, money: 32 },
    { key: 'xxx', name: 'heh', age: 13, money: 95 },
    { key: 'sss', name: 'rtt', age: 15, money: 456 },
    { key: 'xxx', name: 'opp', age: 15, money: 91 },
    { key: 'ddd', name: 'gun', age: 19, money: 66 },
];
 
let getGroup = (data,key)=>{
    let groups = {};
    data.forEach(c=>{
        let value = c[key];
        groups[value] = groups[value] || [];
        groups[value].push(c);
    });
    return groups;
}
 
let option = document.createElement('option');
option.textContent = '';
select.appendChild(option);

let groups = getGroup(data, 'key');
//console.log(groups);
let group_keys = Object.keys(groups);
//console.log(group_keys);
group_keys.forEach(c=>{
	let option = document.createElement('option');
	option.textContent = c;
	select.appendChild(option);
});

select.onchange = function () {
	showGroup(select.value);
}

function genTh() {
	let tr = document.createElement('tr');
	let th = document.createElement('th');
	th.textContent = 'id';
	tr.appendChild(th);
	th = document.createElement('th');
	th.textContent = 'key';
	tr.appendChild(th);
	th = document.createElement('th');
	th.textContent = 'name';
	tr.appendChild(th);
	th = document.createElement('th');
	th.textContent = 'age';
	tr.appendChild(th);
	th = document.createElement('th');
	th.textContent = 'money';
	tr.appendChild(th);
	table.append(tr);
}

function genTd(group) {
	group.forEach((c,i)=>{
		tr = document.createElement('tr');
		let td = document.createElement('td');
		td.textContent = i+1;
		tr.appendChild(td);
		td = document.createElement('td');
		td.textContent = c['key'];
		tr.appendChild(td);
		td = document.createElement('td');
		td.textContent = c['name'];
		tr.appendChild(td);
		td = document.createElement('td');
		td.textContent = c['age'];
		tr.appendChild(td);
		td = document.createElement('td');
		td.textContent = c['money'];
		tr.appendChild(td);
		table.append(tr);		
	});
}

function showGroup(s) {	
	table.innerHTML = '';
	genTh();
	if (s == '') {
		showAll();
	} else {
		let group = groups[s];
		genTd(group);
	}
}

function showAll() {
	table.innerHTML = '';
	genTh();
	let i=0;
	group_keys.forEach(c=>{
		let group = groups[c];
		group.forEach(c=>{
			tr = document.createElement('tr');
			let td = document.createElement('td');
			td.textContent = ++i;
			tr.appendChild(td);
			td = document.createElement('td');
			td.textContent = c['key'];
			tr.appendChild(td);
			td = document.createElement('td');
			td.textContent = c['name'];
			tr.appendChild(td);
			td = document.createElement('td');
			td.textContent = c['age'];
			tr.appendChild(td);
			td = document.createElement('td');
			td.textContent = c['money'];
			tr.appendChild(td);
			table.append(tr);
		});
	});
}

showAll();
</script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现JS数组相同数据分组可以按照以下步骤进行: 1. 遍历原始数组,使用一个空对象或Map来存储每个元素对应的分组数组。假设我们将元素作为key,分组数组作为value。 2. 在遍历过程中,判断当前元素是否已经存在于分组的对象中。 3. 如果不存在,将当前元素作为key,创建一个新的数组作为value,并将当前元素添加到该数组中。 4. 如果已经存在,根据当前元素获取对应的分组数组,然后将当前元素添加到该数组中。 5. 最后,将所有的分组数组提取出来,作为最终的结果返回。 以下是一个示例代码: ```javascript function groupArray(arr) { var groups = {}; for (var i = 0; i < arr.length; i++) { var currentElement = arr[i]; if (groups.hasOwnProperty(currentElement)) { groups[currentElement].push(currentElement); } else { groups[currentElement] = [currentElement]; } } var result = []; for (var key in groups) { result.push(groups[key]); } return result; } var arr = [1, 2, 3, 2, 4, 1, 5, 4, 6]; var groupedArray = groupArray(arr); console.log(groupedArray); ``` 上述代码中,我们使用了一个空对象`groups`来存储每个元素对应的分组数组。遍历原始数组时,判断当前元素是否已经存在于`groups`对象中,如果存在,则将当前元素添加到对应分组数组中;如果不存在,则创建一个新的数组,并将当前元素作为key,该数组作为value。最后,将所有的分组数组提取出来,作为最终的结果返回。 以上就是用300字中文回答JS数组相同数据分组的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值