首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -按每个数组中元素的升序排列数组元素

Javascript -按每个数组中元素的升序排列数组元素
EN

Stack Overflow用户
提问于 2018-02-22 03:41:55
回答 2查看 134关注 0票数 0

我有一个数组:

代码语言:javascript
复制
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组成。我需要按每个键数的升序重新排列这六个元素。这意味着我需要以这种方式重新排列数组:

代码语言:javascript
复制
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中的元素数,如下所示:

代码语言:javascript
复制
    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);

这给了我以下输出:

代码语言:javascript
复制
[{"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重新排列数组感到困惑。如有任何指导或帮助,将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-22 03:49:02

你可以试试.sort

代码语言:javascript
复制
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);

Objects/Array/sort

票数 3
EN

Stack Overflow用户

发布于 2018-02-22 03:59:57

您可以通过使用数组的排序函数来实现这一点。

代码语言:javascript
复制
arr.sort(function(a,b){return a.keys.length - b.keys.length})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48919285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档