Javascript 排序后替换数组中的值

Javascript 排序后替换数组中的值,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我按照正确的顺序对json数据进行排序,但是我想替换position的值 我的json数据: { "dev@be-activ-it.fr-Quiz-10": { "id": "dev@be-activ-it.fr-Quiz-10", "user_id": "dev@be-activ-it.fr", "myposition": 1, "points": 35 }, "fbl@be-activ-it.

我按照正确的顺序对json数据进行排序,但是我想替换position的值

我的json数据:

{ "dev@be-activ-it.fr-Quiz-10": { "id": "dev@be-activ-it.fr-Quiz-10", "user_id": "dev@be-activ-it.fr", "myposition": 1, "points": 35 }, "fbl@be-activ-it.fr-Quiz-10": { "id": "fbl@be-activ-it.fr-Quiz-10", "user_id": "fbl@be-activ-it.fr", "myposition": 2, "points": 38 }, "ddd@be-activ-it.fr-Quiz-10": { "id": "ddd@be-activ-it.fr-Quiz-10", "user_id": "ddd@be-activ-it.fr", "myposition": 3, "points": 37 } } 我得到的是:

[ { "id": "fbl@be-activ-it.fr-Quiz-10", "user_id": "fbl@be-activ-it.fr", "myposition": 2, "points": 38 }, { "id": "ddd@be-activ-it.fr-Quiz-10", "user_id": "ddd@be-activ-it.fr", "myposition": 3, "points": 37 }, { "id": "dev@be-activ-it.fr-Quiz-10", "user_id": "dev@be-activ-it.fr", "myposition": 1, "points": 35 } ] [{“id”:”fbl@be-活动it.fr-QUITY-10“, “用户id”:”fbl@be-activ it.fr“, “我的立场”:2, “点”:38}, {“id”:”ddd@be-活动it.fr-QUITY-10“, “用户id”:”ddd@be-activ it.fr“, “我的位置”:3, “点”:37}, {“id”:”dev@be-活动it.fr-QUITY-10“, “用户id”:”dev@be-activ it.fr“, “我的立场”:1, “点数”:35}]
我想交换位置,你能帮我吗?thx

基本上,使用您的代码可以创建一个
数组,而不是另一个对象,因此您需要从已排序的数组中重新创建该对象。
对于每个或任何循环函数,都可以使用reduce。我认为减少是比较容易看到的

在这里,您可以使用
您得到的
并返回
您想要的

const yourResult=[
{
“id”:”fbl@be-活动it.fr-QUITY-10“,
“用户id”:”fbl@be-activ it.fr“,
“我的立场”:2,
“点数”:38
},
{
“id”:”ddd@be-活动it.fr-QUITY-10“,
“用户id”:”ddd@be-activ it.fr“,
“我的位置”:3,
“点数”:37
},
{
“id”:”dev@be-活动it.fr-QUITY-10“,
“用户id”:”dev@be-activ it.fr“,
“我的立场”:1,
“点数”:35
}
]
const whatYouWant=您的结果。reduce((a,c,i)=>{
c['myposition']=i+1;
a[c.id]=c;
返回a;
}, {})

log(whatYouWant)
基本上,使用您的代码可以创建一个
数组,而不是另一个对象,因此您需要从已排序的数组中重新创建该对象。
对于每个或任何循环函数,都可以使用reduce。我认为减少是比较容易看到的

在这里,您可以使用
您得到的
并返回
您想要的

const yourResult=[
{
“id”:”fbl@be-活动it.fr-QUITY-10“,
“用户id”:”fbl@be-activ it.fr“,
“我的立场”:2,
“点数”:38
},
{
“id”:”ddd@be-活动it.fr-QUITY-10“,
“用户id”:”ddd@be-activ it.fr“,
“我的位置”:3,
“点数”:37
},
{
“id”:”dev@be-活动it.fr-QUITY-10“,
“用户id”:”dev@be-activ it.fr“,
“我的立场”:1,
“点数”:35
}
]
const whatYouWant=您的结果。reduce((a,c,i)=>{
c['myposition']=i+1;
a[c.id]=c;
返回a;
}, {})
console.log(whatYouWant)
用于提取对象的值,然后用于重建对象:

const json={
"dev@be-活动it.fr-QUICK-10”:{
“id”:”dev@be-活动it.fr-QUITY-10“,
“用户id”:”dev@be-activ it.fr“,
“我的立场”:2,
“点数”:35
},
"fbl@be-活动it.fr-QUICK-10”:{
“id”:”fbl@be-活动it.fr-QUITY-10“,
“用户id”:”fbl@be-activ it.fr“,
“我的立场”:1,
“点数”:38
},
"ddd@be-活动it.fr-QUICK-10”:{
“id”:”ddd@be-活动it.fr-QUITY-10“,
“用户id”:”ddd@be-activ it.fr“,
“我的位置”:3,
“点数”:37
}
};
const result=Object.values(json).sort((a,b)=>a.myposition-b.myposition).reduce((all,curr)=>{
所有[当前id]=当前;
全部归还;
}, {});
控制台日志(结果)用于提取对象的值,然后用于重建对象:

const json={
"dev@be-活动it.fr-QUICK-10”:{
“id”:”dev@be-活动it.fr-QUITY-10“,
“用户id”:”dev@be-activ it.fr“,
“我的立场”:2,
“点数”:35
},
"fbl@be-活动it.fr-QUICK-10”:{
“id”:”fbl@be-活动it.fr-QUITY-10“,
“用户id”:”fbl@be-activ it.fr“,
“我的立场”:1,
“点数”:38
},
"ddd@be-活动it.fr-QUICK-10”:{
“id”:”ddd@be-活动it.fr-QUITY-10“,
“用户id”:”ddd@be-activ it.fr“,
“我的位置”:3,
“点数”:37
}
};
const result=Object.values(json).sort((a,b)=>a.myposition-b.myposition).reduce((all,curr)=>{
所有[当前id]=当前;
全部归还;
}, {});
控制台日志(结果)
相反,b-a尝试a-b。访问:

相反,b-a尝试a-b。访问:

let data = fs.readFileSync('course.json/rank.json', 'utf8');
    data = JSON.parse(data);

    const comparePoints = (a,b)=>{

      let a_points = a["points"]
      let b_points = b["points"]

      return b_points-a_points
    }

    const sort = (data) => {
    let keys = Object.keys(data)
    let dataAsArray = keys.map(e=>data[e])
    return dataAsArray.sort(comparePoints)
    }

    data = sort(data);
    console.log(data);
[ { "id": "fbl@be-activ-it.fr-Quiz-10", "user_id": "fbl@be-activ-it.fr", "myposition": 2, "points": 38 }, { "id": "ddd@be-activ-it.fr-Quiz-10", "user_id": "ddd@be-activ-it.fr", "myposition": 3, "points": 37 }, { "id": "dev@be-activ-it.fr-Quiz-10", "user_id": "dev@be-activ-it.fr", "myposition": 1, "points": 35 } ]
const comparePoints = (a,b)=>{

  let a_points = a["points"]
  let b_points = b["points"]

  return a_points-b_points
}