我希望能够通过嵌套对象订购数组。
我有这个数组,其中包含有关时间轴上对象的信息,我可以通过嵌套数组内定义的start
位置对其进行排序。我可以用lines[0].events[0].start
遍历数组
这是数组:
timelines = [
{
name: 'obj1',
data: { id : 'obj1-guid' },
lines: [{
events: [{
name: 'animation1',
data : { id : 'animation1-guid' },
start : 100,
duration : 200
}]
}],
video_url: 'url',
},
{
name: 'obj2',
data: { id : 'obj2-guid' },
lines: [{
events: [{
name: 'animation1',
data : { id : 'animation1-guid' },
start : 4,
duration : 200
}]
}],
video_url: 'url',
},
{
name: 'obj3',
data: { id : 'obj3-guid' },
lines: [{
events: [{
name: 'animation1',
data : { id : 'animation1-guid' },
start : 56,
duration : 200
}]
}],
video_url: 'url',
},
];
我尝试了这样的功能
function sorting(json_object, key_to_sort_by) {
function sortByKey(a, b) {
var x = a[key_to_sort_by];
var y = b[key_to_sort_by];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
json_object.sort(sortByKey);
}
timelines = sorting(timelines, 'lines[0].events[0].start');
但是当然不行
最佳答案
只是常规的sort
:
timelines = [
{
name: 'obj1',
data: { id : 'obj1-guid' },
lines: [{
events: [{
name: 'animation1',
data : { id : 'animation1-guid' },
start : 100,
duration : 200
}]
}],
video_url: 'url',
},
{
name: 'obj2',
data: { id : 'obj2-guid' },
lines: [{
events: [{
name: 'animation1',
data : { id : 'animation1-guid' },
start : 4,
duration : 200
}]
}],
video_url: 'url',
},
{
name: 'obj3',
data: { id : 'obj3-guid' },
lines: [{
events: [{
name: 'animation1',
data : { id : 'animation1-guid' },
start : 56,
duration : 200
}]
}],
video_url: 'url',
},
];
const r = timelines.sort((a,b) => a.lines[0].events[0].start - b.lines[0].events[0].start);
console.log(r)