Javascript 排序筛选器是特定格式的对象数组

Javascript 排序筛选器是特定格式的对象数组,javascript,arrays,angularjs,sorting,javascript-objects,Javascript,Arrays,Angularjs,Sorting,Javascript Objects,按以下格式对我的json进行排序: [{"x":"Jan-2017","y":41},{"x":"Feb-2017","y":20},{"x":"Mar-2017","y":45},{"x":"Apr-2017","y":29},{"x":"May-2017","y":59},{"x":"Jun-2017","y":378},{"x":"Jul-2017","y":354},{"x":"Aug-2017","y":398},{"x":"Sep-2017","y":390},{"x":"O

按以下格式对我的json进行排序:

    [{"x":"Jan-2017","y":41},{"x":"Feb-2017","y":20},{"x":"Mar-2017","y":45},{"x":"Apr-2017","y":29},{"x":"May-2017","y":59},{"x":"Jun-2017","y":378},{"x":"Jul-2017","y":354},{"x":"Aug-2017","y":398},{"x":"Sep-2017","y":390},{"x":"Oct-2017","y":579},{"x":"Nov-2017","y":651},{"x":"Dec-2017","y":832}]
    [{"x":"Aug-2017","y":398},{"x":"Oct-2017","y":579},{"x":"Nov-2017","y":651},{"x":"Dec-2017","y":832}]
例如:

如果我有json,如下所示:

    [{"x":"Jan-2017","y":41},{"x":"Feb-2017","y":20},{"x":"Mar-2017","y":45},{"x":"Apr-2017","y":29},{"x":"May-2017","y":59},{"x":"Jun-2017","y":378},{"x":"Jul-2017","y":354},{"x":"Aug-2017","y":398},{"x":"Sep-2017","y":390},{"x":"Oct-2017","y":579},{"x":"Nov-2017","y":651},{"x":"Dec-2017","y":832}]
    [{"x":"Aug-2017","y":398},{"x":"Oct-2017","y":579},{"x":"Nov-2017","y":651},{"x":"Dec-2017","y":832}]
结果应该是:

    [{"x":"Jan-2017","y":0},{"x":"Feb-2017","y":0},{"x":"Mar-2017","y":0},{"x":"Apr-2017","y":0},{"x":"May-2017","y":0},{"x":"Jun-2017","y":0},{"x":"Jul-2017","y":0},{"x":"Aug-2017","y":398},{"x":"Sep-2017","y":0},{"x":"Oct-2017","y":579},{"x":"Nov-2017","y":651},{"x":"Dec-2017","y":832}]

任何帮助或提示都能帮到我。

你可以为月份设置一个数组,按年份和月份对给定的数据进行排序,并使用数据数组的索引映射一整年,直到映射所有年份

var月数=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'],
数据=[{x:“2017年8月”,y:398},{x:“2017年10月”,y:579},{x:“2017年11月”,y:651},{x:“2017年12月”,y:832}]
.sort(({x:a},{x:b})=>{
var aa=a.split('-'),
bb=b.分裂('-');
返回aa[1]-bb[1]| | |个月。indexOf(aa[0])-个月。indexOf(bb[0]);
}),
指数=0,
年份=数据[0]。x.slice(-4),
结果=[];
做{
result.push(…months.map(month=>
数据[index]&&data[index].x.slice(0,3)==month
?数据[索引+++]
:{x:[月,年]。加入('-',y:0}
));
}while(year++

.as console wrapper{max height:100%!important;top:0;}
您可以借助moment.js获取所有月份,然后遍历它并从中创建输出数组

var输入=[{“x”:“2017年8月”,“y”:398},{“x”:“2017年10月”,“y”:579},{“x”:“2017年11月”,“y”:651},{“x”:“2017年12月”,“y”:832}]
var allmonths=矩.月短();
风险值年份=2017年;
var输出=所有月份。映射((el,i)=>{
让温度;
返回输入.some((a)=>a.x==el+“-”+年?temp=a:false)?temp:{x:el+“-”+年,y:0};
});
控制台日志(输出)

你试过smth吗?那是一个对象数组,不是。“JSON是一种与文本、语言无关的数据交换格式,很像XML、CSV或YAML。”——@AliaksandrPitkevich我试图用一些标准数据制作一个角度过滤器:数据是否已排序?不,数据未排序你在为什么这么努力?这对于一个相对简单的任务来说太复杂了。thanx@ninascholzal虽然这段代码可能(也可能不会)解决问题,但一个好的答案还应该包含一个关于代码如何工作的解释。