簡體   English   中英

用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都可以正常工作。

這個問題有點不合常規,但是不確定為什么它被否決了。 無論如何,您可以執行以下操作:

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] + ';  ';
    }
}

基本上將其轉換為以貓為鍵的哈希值,並將數字附加為值。 然后轉換為字符串,以便可以打印它。

像這樣的東西:

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

應該這樣做:

 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; 

這是一個將分組數據返回到另一個對象的函數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM