首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在对象数组中添加位置/顺序

在对象数组中添加位置/顺序
EN

Stack Overflow用户
提问于 2019-03-13 20:37:46
回答 3查看 52关注 0票数 0

我有一个对象数组,如下所示:

代码语言:javascript
复制
    [{
    "id": 1,
    "Size": 90,
    "Maturity": 24,
   },
  {
    "id": 2,
    "Size": 85,
    "Maturity": 22,
  },
  {
    "id": 3,
    "Size": 80,
    "Maturity": 20,
   }]

我需要在这个数组的基础上不同的属性值排序(例如:成熟度),并添加一个具有升序/排名的列顺序。例如:

代码语言:javascript
复制
      [{
        "id": 1,
        "Size": 90,
        "Maturity": 22,
         "Order": 2
       },
      {
        "id": 2,
        "Size": 85,
        "Maturity": 25,
        "Order": 3
      },
      {
        "id": 3,
        "Size": 80,
        "Maturity": 20,
        "Order": 1
       }]
EN

回答 3

Stack Overflow用户

发布于 2019-03-13 20:56:40

代码语言:javascript
复制
const arr = [{
    "id": 1,
    "Size": 90,
    "Maturity": 24,
   },
   {
    "id": 2,
    "Size": 85,
    "Maturity": 22,
   },
   {
    "id": 3,
    "Size": 80,
    "Maturity": 20,
   }];

arr
  .map((item,index) => ({ ...item, Order: index + 1 }))
  .sort((a, b) => b.Maturity - a.Maturity)
票数 1
EN

Stack Overflow用户

发布于 2019-03-13 21:01:09

使用sort对数组进行排序,然后根据使用forEach对其进行排序的索引为每个对象添加属性

代码语言:javascript
复制
var inp = [{
    id: 1,
    Size: 90,
    Maturity: 24,
   },
  {
    id: 2,
    Size: 85,
    Maturity: 22,
  },
  {
    id: 3,
    Size: 80,
    Maturity: 20,
   }]
   
// Sort
inp.sort(function(a, b){
  return a.Maturity == b.Maturity ? 0 : +(a.Maturity > b.Maturity) || -1;
});

// add prop
inp.forEach(function(row, index) {
  row.index = index + 1;
});

console.log(inp)

票数 0
EN

Stack Overflow用户

发布于 2019-03-13 21:02:54

代码语言:javascript
复制
var objs = [ 
    {
    "id": 1,
    "Size": 90,
    "Maturity": 24,
   },
  {
    "id": 2,
    "Size": 85,
    "Maturity": 22,
  },
  {
    "id": 3,
    "Size": 80,
    "Maturity": 20,
   }];
function compare(a,b) {
  if (a.Size < b.Size)
    return -1;
  if (a.Size > b.Size)
    return 1;
  return 0;
}

objs.sort(compare);
for (var i = 0; i < objs.length; i++) {
    objs[i].Order = i+1;
}
console.log(objs);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55142119

复制
相关文章

相似问题

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