我希望能够通过嵌套对象订购数组。
我有这个数组,其中包含有关时间轴上对象的信息,我可以通过嵌套数组内定义的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)

10-06 13:01
查看更多