在javascript中按相同的值对所有关键元素进行排序
Sort all key elements by the same value in javascript
我有一个这样的对象:
var objectName = { "290" : "Cat1", "293" : "Cat2", "295" : "Cat1" }
如何对具有相同值的元素的输出进行排序?
我需要这样的东西:
var sortByCat = 'Cat1: 290, 295; Cat2: 293';
Javascript或jQuery可以正常工作。
这应该可以做到:
var obj = {
"290": "Cat1",
"293": "Cat2",
"295": "Cat1",
"291": "Cat1",
"292": "Cat2",
"297": "Cat3"
}
var res = JSON.stringify(Object.keys(obj).reduce(function(res, key) {
if (res[obj[key]]) res[obj[key]].push(key)
else res[obj[key]] = [key];
return res;
}, {})).replace(/([,:])/g, "$1 ").replace(/],/g, "]; ").replace(/[{}'[']"]/g, "");
document.body.innerHTML = res;
这个问题有点不正统,但不知道为什么被否决了。 无论如何,你可以做这样的事情:
https://jsfiddle.net/wfyndq7x/
var obj = { '290': 'Cat1', '293': 'Cat2', '295': 'Cat1' };
var sortByCat = {}
for (var num in obj) {
if (obj.hasOwnProperty(num)) {
if (sortByCat[obj[num]] == null)
sortByCat[obj[num]] = num;
else
sortByCat[obj[num]] += ', ' + num;
}
}
var catString = ''
for (var catData in sortByCat) {
if (sortByCat.hasOwnProperty(catData)) {
catString += catData + ': ' + sortByCat[catData] + '; ';
}
}
基本上将其转换为以键作为 cat 的哈希值,并将数字附加为值。 然后转换为字符串,以便打印它。
像
这样:
var map = {};
var obj = { "290" : "Cat1", "293" : "Cat2", "295" : "Cat1" };
for (var i in obj)
{
var val = obj[i];
if (!map[val]) map[val] = [];
map[val].push(i);
}
console.log(map);
这是一个将分组数据返回到另一个对象的函数。
在 http://jspin.com/fubeqeweqa 中看到它
var objectName = { "290": "Cat1", "293": "Cat2", "295": "Cat1" };
function groupByValue(_objectName) {
var sorted = {};
for (var obj in _objectName) {
sorted[_objectName[obj]] = sorted[_objectName[obj]] || [];
sorted[_objectName[obj]].push(obj);
}
return sorted;
}
//{"Cat1":["290","295"],"Cat2":["293"]}
var objectName = { "290" : "Cat1", "293" : "Cat2", "295" : "Cat1" };
// build a map where key is category name and value are its associated numbers
var categories = {};
for (var num in objectName) {
var name = objectName[num];
if (!categories.hasOwnProperty(name)) {
categories[name] = [];
}
categories[name].push(num);
}
// create formatted string
var sortByCat = '';
for (var name in categories) {
sortByCat += name + ': ' + categories[name].join(', ') + '; ';
}
console.log(sortByCat);
相关文章:
- 遍历类元素数组,并在jquery中选择同级元素
- 如何将新的键/值对元素添加到现有数组
- 在元素数组上循环只会影响最后一个元素
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 在JavaScript中为表单元素生成键值对
- 如何通过箭头键连续/平滑地移动元素
- 如何创建具有单个元素或元素数组的数组
- 如何删除 JavaScript 对象中具有相同键的所有元素
- 使用 KNOCKOUT.js 在禁用元素的 HTML 中保持 Tab 键顺序
- JavaScript (w/jQuery) - 当被其他元素包围时,在悬停时增长一个元素以填充容器
- jQuery网站的键盘快捷键,焦点使用左键和右键转到上一个或下一个元素
- 如何使用JQuery在HTML元素数组中获取HTML元素
- 如何使用左右箭头键在元素之间导航
- 使用箭头键移动元素 jquery
- handlebarsjs - 我可以通过 json 键访问元素吗?
- 在 jQuery 中使用字符串键将元素添加到数组中
- 从对象中获取第一个键和元素
- 如何获取触发触控键的元素
- 使用Javascript Regex获取元元素属性
- 如何打印键控元素值