Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript对对象的内容进行排序_Javascript - Fatal编程技术网

使用javascript对对象的内容进行排序

使用javascript对对象的内容进行排序,javascript,Javascript,如果我有一个对象看起来像: let object = { name1 : { number : .5, otherVar : 'something' }, name2 : { number : .7, otherVar : 'text' }, name3 : { number : -.1, otherVar : 'some words' } }; 我怎样才能按数值排序并得到一个数组:[name3,name1,name2]

如果我有一个对象看起来像:

let object = {
  name1 : {
    number : .5,
    otherVar : 'something'
  }, 
  name2 : {
    number : .7,
    otherVar : 'text'
  },
  name3 : {
    number : -.1,
    otherVar : 'some words'
  }
};

我怎样才能按数值排序并得到一个数组:[name3,name1,name2]?

它应该做些脏活,首先将对象平铺成一个对象数组,然后创建自定义比较函数,最后排序,瞧

var keys = Object.keys(object);

function compare(a,b) {
  if (object[a].number < object[b].number)
    return -1;
  if (object[a].number > object[b].number)
    return 1;
  return 0;
}
var res = keys.sort(compare);
var-keys=Object.keys(对象);
功能比较(a、b){
if(对象[a]。编号<对象[b]。编号)
返回-1;
if(对象[a].number>对象[b].number)
返回1;
返回0;
}
var res=keys.sort(比较);

它应该做一些不必要的工作,首先将对象平铺成一个对象数组,然后创建自定义比较函数,最后排序,瞧

var keys = Object.keys(object);

function compare(a,b) {
  if (object[a].number < object[b].number)
    return -1;
  if (object[a].number > object[b].number)
    return 1;
  return 0;
}
var res = keys.sort(compare);
var-keys=Object.keys(对象);
功能比较(a、b){
if(对象[a]。编号<对象[b]。编号)
返回-1;
if(对象[a].number>对象[b].number)
返回1;
返回0;
}
var res=keys.sort(比较);
这是一条单行线:

Object.keys(object).map(key => object[key]).sort((a, b) => a.number - b.number)
这是一条单行线:

Object.keys(object).map(key => object[key]).sort((a, b) => a.number - b.number)

let sorted=Object.keys(obj).map(key=>obj[key]).sort((a,b)=>a.number-b.number)

说明:

  • Object.keys(obj)
    将返回一个键数组
    ['name1'、'name2'…]
  • .map
    将该数组转换为值数组
  • .sort
    采用比较函数并返回排序后的数组(请参阅)

建议:不要调用您的对象
object
:)

让sorted=object.keys(obj).map(key=>obj[key]).sort((a,b)=>a.number-b.number)

说明:

  • Object.keys(obj)
    将返回一个键数组
    ['name1'、'name2'…]
  • .map
    将该数组转换为值数组
  • .sort
    采用比较函数并返回排序后的数组(请参阅)
建议:不要调用对象
对象
:)

var项目=[];
items=JSON.parse(对象);
}); //会给你一个数组
功能比较(a、b){
如果(a.编号b.编号)
返回1;
返回0;
}
项目。排序(比较)//数组将按数字排序
var项目=[];
items=JSON.parse(对象);
}); //会给你一个数组
功能比较(a、b){
如果(a.编号b.编号)
返回1;
返回0;
}

项目。排序(比较)//数组将按编号排序
创建一个包含对象属性的数组,并将名称添加到其中:

var array = [];
for (var key in object) {
    object[key].name = key;
    array.push(object[key]);
}
然后按数字对该数组进行排序:

array.sort((a, b) => a.number - b.number);
然后从数组中获取名称:

var sortedNames = array.map(e => e.name);
完整演示:

let对象={
名称1:{
编号:.5,
otherVar:“某物”
}, 
名称2:{
编号:.7,
otherVar:'文本'
},
名称3:{
编号:-.1,
otherVar:“一些词”
}
};
var数组=[];
for(对象中的变量键){
对象[键]。名称=键;
array.push(对象[key]);
}
array.sort((a,b)=>a.number-b.number);
var sortedNames=array.map(e=>e.name);

控制台日志(分类名称)创建一个数组,该数组包含添加了名称的对象属性:

var array = [];
for (var key in object) {
    object[key].name = key;
    array.push(object[key]);
}
然后按数字对该数组进行排序:

array.sort((a, b) => a.number - b.number);
然后从数组中获取名称:

var sortedNames = array.map(e => e.name);
完整演示:

let对象={
名称1:{
编号:.5,
otherVar:“某物”
}, 
名称2:{
编号:.7,
otherVar:'文本'
},
名称3:{
编号:-.1,
otherVar:“一些词”
}
};
var数组=[];
for(对象中的变量键){
对象[键]。名称=键;
array.push(对象[key]);
}
array.sort((a,b)=>a.number-b.number);
var sortedNames=array.map(e=>e.name);

控制台日志(分类名称)这里是另一个es6示例:

let对象={
名称1:{
编号:.5,
otherVar:“某物”
}, 
名称2:{
编号:.7,
otherVar:'文本'
},
名称3:{
编号:-.1,
otherVar:“一些词”
}
};
设k=Object.keys(Object.sort)((a,b)=>Object[a].number>Object[b].number));

控制台日志(k)这里是另一个es6示例:

let对象={
名称1:{
编号:.5,
otherVar:“某物”
}, 
名称2:{
编号:.7,
otherVar:'文本'
},
名称3:{
编号:-.1,
otherVar:“一些词”
}
};
设k=Object.keys(Object.sort)((a,b)=>Object[a].number>Object[b].number));


控制台日志(k)NIIIICE一号!必须在顶部;)Niiiiiice一号!必须在顶部;)
JSON.parse(object)
如何给你一个数组?它足够接近了,但是为什么你不使用keys()函数来获得数组呢?JSON.parse(object)
如何给你一个数组?它足够接近了,但是你为什么不使用keys()函数来获得数组呢?好的,下面是一个完美答案的例子。谢谢分享:)实际上这并不是我想要的,我想要的是一个键数组,而不是键上的对象,所以我想要的不是[{number:-.1,…}['name3','name1'…谢谢@Damianaltenero。为了只获取名称,您可以重新映射结果数组,并获取密钥名称。好的,下面是一个完美答案的示例。感谢分享:)实际上这并不是我想要的,我想要的是一个密钥数组,而不是密钥处的对象,所以我想要的不是[{number:-.1,…}['name3','name1'…谢谢@Damianalattenero。要得到名称,你可以重新映射结果数组,并获得密钥名称。哇哦,这太棒了,聪明了…:)谢谢分享哇哦,这太棒了,聪明了…:)谢谢分享这是一个非常好的内联解决方案,这就是规则:)我的解决方案没有那么可怕,这就是为什么我喜欢它更重要的是,我现在学会了如何去做:这是一个非常好的内联解决方案,规则:)我的解决方案不是很好,这就是为什么a更喜欢它,我现在学会了如何去做:这不起作用。键中没有
number
属性。是啊@Barmar好眼睛!你是ab