Json Angularjs根据值的数量对元素进行排序

Json Angularjs根据值的数量对元素进行排序,json,angularjs,Json,Angularjs,我有一个json对象的形式 { "key1": ["value4"], "key2": ["value1","value2","value3"], "key3": ["value5","value6"] } 我想根据值的数量对它们进行排序,这些值应该是 { "key2": ["value1","value2","value3"], "key3": ["value5","value6"], "key1": ["value4"] } 任何人都可以帮

我有一个json对象的形式

{
    "key1": ["value4"],
    "key2": ["value1","value2","value3"],
    "key3": ["value5","value6"]
}
我想根据值的数量对它们进行排序,这些值应该是

{
    "key2": ["value1","value2","value3"],
    "key3": ["value5","value6"],
    "key1": ["value4"]
}

任何人都可以帮助我。

我建议根据您的数据创建一个新阵列,并使用它:

var json = {
  "key1": ["value4"],
  "key2": ["value1", "value2", "value3"],
  "key3": ["value5", "value6"]
};

$scope.items = [];

function fillItems() {
  for (var key in json) {
    if (json.hasOwnProperty(key)) {
      $scope.items.push({
        key: key,
        values: json[key]
      });
    }
  }
}

fillItems();
HTML:


键:{{item.Key}}值:{{item.Values}

演示:

这是我的解决方案,问题是我无法更改键名,但它会根据数组的长度对值进行排序。因此,如果键名不重要,这将对您起作用,但如果您也想对键进行排序,则需要创建一个新数组

var obj = {
    "key1": ["value4"],
    "key2": ["value1","value2","value3"],
    "key3": ["value5","value6"]
}
//property count of your object
var length = Object.keys(obj).length;

var j;
var flag = true;   // set flag to true to begin first pass
var temp;   //holding variable

while ( flag )
{
    flag= false;    //set flag to false awaiting a possible swap
    for( j=0;  j < length -1;  j++ )
    {
        if ( obj[Object.keys(obj)[j]].length < obj[Object.keys(obj)[j+1]].length )   // change to > for ascending sort
        {
            temp = obj[Object.keys(obj)[j]];//swap elements

            obj[Object.keys(obj)[j]] = obj[Object.keys(obj)[j+1]];
            obj[Object.keys(obj)[j+1]] = temp;

            flag = true; //shows a swap occurred  


        } 
    } 
} 
var obj={
“键1”:[“值4”],
“键2”:[“值1”、“值2”、“值3”],
“键3”:[“值5”、“值6”]
}
//对象的属性计数
var length=Object.keys(obj.length);
var j;
var flag=true;//将标志设置为true以开始第一次传递
无功温度//保持变量
while(旗帜)
{
flag=false;//将flag设置为false,等待可能的交换
对于(j=0;j进行升序排序
{
temp=obj[Object.keys(obj)[j]];//交换元素
obj[Object.keys(obj)[j]]=obj[Object.keys(obj)[j+1]];
obj[对象键(obj)[j+1]]=温度;
flag=true;//显示发生了交换
} 
} 
} 

这是无效的JSON。您的意思是
“key1”:[“value4”]
等吗?对不起,是的,这是“key1”:[“value4”]对象属性没有语言定义的顺序,因此无法保证您迭代属性的顺序。你能解释一下这个用例吗?您要用ng repeat订购吗?你需要钥匙吗?将其转换为数组以便于排序是否可以接受?我希望使用REPEATNG REPEATION进行排序请回答我的另外两个问题:)
var obj = {
    "key1": ["value4"],
    "key2": ["value1","value2","value3"],
    "key3": ["value5","value6"]
}
//property count of your object
var length = Object.keys(obj).length;

var j;
var flag = true;   // set flag to true to begin first pass
var temp;   //holding variable

while ( flag )
{
    flag= false;    //set flag to false awaiting a possible swap
    for( j=0;  j < length -1;  j++ )
    {
        if ( obj[Object.keys(obj)[j]].length < obj[Object.keys(obj)[j+1]].length )   // change to > for ascending sort
        {
            temp = obj[Object.keys(obj)[j]];//swap elements

            obj[Object.keys(obj)[j]] = obj[Object.keys(obj)[j+1]];
            obj[Object.keys(obj)[j+1]] = temp;

            flag = true; //shows a swap occurred  


        } 
    } 
}