Json Angularjs根据值的数量对元素进行排序
我有一个json对象的形式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"] } 任何人都可以帮
{
"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
}
}
}