【问题标题】:Javascript - Rearrange array elements in ascending order of elements within each arrayJavascript - 按每个数组中元素的升序重新排列数组元素
【发布时间】:2018-08-01 19:46:01
【问题描述】:

我有一个数组:

arr = 
[{"nid":"MIA","keys":[{"sid":"sm1"},{"sid":"sm2"}]},

{"nid":"MID","keys":[{"sid":"sm1"}]},

{"nid":"MIT","keys":[{"sid":"sm1"},{"sid":"sm2"},{"sid":"sm3"},{"sid":"sm4"},{"sid":"sm5"},{"sid":"sm6"},{"sid":"sm7"},{"sid":"sm8"},{"sid":"sm9"},{"sid":"sm10"}]},

{"nid":"MIO","keys":[{"sid":"sm1"},{"sid":"sm2"},{"sid":"sm3"}]},

{"nid":"MIS","keys":[{"sid":"sm1"},{"sid":"sm2"}]},

{"nid":"MIH","keys":[{"sid":"sm1"}]}]

arr 由 6 个元素组成。这六个元素中的每一个都由另一个数组keys 组成。我需要按照每个元素中键数的升序重新排列六个元素。这意味着我需要以这种方式重新排列数组:

arr = 
[

{"nid":"MID","keys":[{"sid":"sm1"}]},

{"nid":"MIH","keys":[{"sid":"sm1"}]},

{"nid":"MIA","keys":[{"sid":"sm1"},{"sid":"sm2"}]},

{"nid":"MIS","keys":[{"sid":"sm1"},{"sid":"sm2"}]},

{"nid":"MIO","keys":[{"sid":"sm1"},{"sid":"sm2"},{"sid":"sm3"}]},

{"nid":"MIT","keys":[{"sid":"sm1"},{"sid":"sm2"},{"sid":"sm3"},{"sid":"sm4"},{"sid":"sm5"},{"sid":"sm6"},{"sid":"sm7"},{"sid":"sm8"},{"sid":"sm9"},{"sid":"sm10"}]},
]

我试图获取每个数组元素的keys 内的元素数量,如下面的代码所示:

    var arrMap = [];
    arr.forEach(function(array_) {
        key_ = array_.keys;
        var count = 0;
        key_.forEach(function(arrKey) {
            count++;
            var keyCode = arrKey.sid;
        })
        arrMap.push({'nid':array_.nid, 'count': count});
    })
    console.log(arrMap);

这给了我以下输出:

[{"nid":"MIA","count":2},{"nid":"MID","count":1},{"nid":"MIT","count":10},{"nid":"MIO","count":3},{"nid":"MIS","count":2},{"nid":"MIH","count":1}]

现在我很困惑如何使用关键元素的count 重新排列数组。任何指导/帮助将不胜感激!

【问题讨论】:

    标签: javascript arrays sorting hashmap nested


    【解决方案1】:

    你可以使用数组的sort函数来实现

    arr.sort(function(a,b){return a.keys.length - b.keys.length})
    

    【讨论】:

      【解决方案2】:

      你可以试试.sort

      let arr = [ {"nid":"MIA","keys":[{"sid":"sm1"},{"sid":"sm2"}]},
      {"nid":"MID","keys":[{"sid":"sm1"}]},
      {"nid":"MIT","keys":[{"sid":"sm1"},{"sid":"sm2"},{"sid":"sm3"},{"sid":"sm4"},{"sid":"sm5"},{"sid":"sm6"},{"sid":"sm7"},{"sid":"sm8"},{"sid":"sm9"},{"sid":"sm10"}]},
      {"nid":"MIO","keys":[{"sid":"sm1"},{"sid":"sm2"},{"sid":"sm3"}]},
      {"nid":"MIS","keys":[{"sid":"sm1"},{"sid":"sm2"}]},
      {"nid":"MIH","keys":[{"sid":"sm1"}]} ];
      
      arr.sort((a, b) => a.keys.length - b.keys.length);
      
      console.log(arr);

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

      【讨论】:

        猜你喜欢
        • 2021-04-22
        • 1970-01-01
        • 1970-01-01
        • 2016-12-28
        • 1970-01-01
        • 2016-02-01
        • 1970-01-01
        • 2012-09-17
        • 2022-07-30
        相关资源
        最近更新 更多