按数组索引排序

这个问题在这里已经有了答案:

  • 通过JavaScript中的字符串属性值排序对象数组33个答案
  • 排序一组JavaScript对象24个答案

  • 首先对列表进行排序,通过自定义排序函数来比较索引,然后映射。

        var exemples =  [
                {
                    'name'     : 'd',
                    'index'    : 3
                },
                {
                    'name'     : 'c',
                    'index'     : 2
                },
                {
                    'name'     : 'a',
                    'index'    : 0
                },
                {
                    'name'     : 'b',
                    'index'    : 1
                }
            ];
    
          const list = exemples.sort((a,b) => a.index - b.index).map((exemple, index, array) => exemple.name)
    
          console.log(list)

    你不需要排序和过滤。 使用Array#reduce 。 在一次迭代中,您可以获得排序后的元素。 这比先排序然后过滤更有效。 这会给你O(n)解决方案。 以下面为例。

    var exemples = [{
        'name': 'd',
        'index': 3
      },
      {
        'name': 'c',
        'index': 2
      },
      {
        'name': 'a',
        'index': 0
      },
      {
        'name': 'b',
        'index': 1
      }
    ];
    
    var ans = exemples.reduce(function (r,v) {
      r[v.index] = v.name;
      return r;
    }, []);
    
    console.log(ans);

    您可以在映射之前对数组进行排序。 这里是一个例子:

    var exemples =  [{'name'     : 'd','index'    : 3},{'name'     : 'c','index'     : 2},{'name'     : 'a','index'    : 0},{'name'     : 'b','index'    : 1}];
    
    const list = exemples.sort((v1, v2) => v1.index - v2.index).map((v) => v.name);
    console.log(list)
    链接地址: http://www.djcxy.com/p/19339.html

    上一篇: Sort by index an array

    下一篇: Sort Array of Objects by specific key value