Javascript 排序后替换数组中的值
我按照正确的顺序对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}]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.
我想交换位置,你能帮我吗?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
}