尝试根据json响应创建一个新对象。
说我得到了
的json回复methods:{
web3(){ return web3 }
}
如何创建一个新的对象数组,同时按照差异对每个对象进行排序?
this.web3().someWeb3Prop
只需要了解逻辑如何工作
[{
"id": "something1",
"diff": "0.09"
},
{
"id": "something2",
"diff": "0.7"
},
{
"id": "something3",
"diff": "0.1"
}]
答案 0 :(得分:2)
您可以使用slice
创建数组的副本,然后通过减去差异来sort
创建数组,并使用rank
属性将其映射回来
var arr = [{
"id": "something1",
"diff": "0.09"
}, {
"id": "something2",
"diff": "0.7"
}, {
"id": "something3",
"diff": "0.1"
}];
var arr2 = arr.slice().sort((a,b) => b.diff - a.diff).map((x,i) => (x.rank=(i+1),x));
console.log(arr2);
.as-console-wrapper {max-height: 100%!important; top:0;}
答案 1 :(得分:1)
var response = [{
"id": "something1",
"diff": "0.09"
},
{
"id": "something2",
"diff": "0.7"
},
{
"id": "something3",
"diff": "0.1"
}]
var sorted = response.slice().sort(function(a, b) {
return (parseFloat(b.diff)) - (parseFloat(a.diff));
})
sorted.forEach(function(row, index) {
row.rank = index +1;
});
console.log(sorted);

答案 2 :(得分:1)
您可以使用:
var response = [{
"id": "something1",
"diff": "0.09"
},
{
"id": "something2",
"diff": "0.7"
},
{
"id": "something3",
"diff": "0.1"
}
];
var sorted = JSON.parse(JSON.stringify(response));
sorted.sort(function(a, b) {
return (Number(b.diff) - Number(a.diff)) > 0;
}).forEach(function(e, index) {
e.rank = index + 1;
});
console.log(sorted);
如果有效,请告诉我。
答案 3 :(得分:1)
以下是我的表现:
const data = [{
id: "something1",
diff: "0.09"
}, {
id: "something2",
diff: "0.7"
}, {
id: "something3",
diff: "0.1"
}, {
id: "something4",
diff: null
}];
const result = data
.filter(({diff}) => diff !== null) // remove all objects with null for diff
.sort((x, y) => y.diff - x.diff) // sort the data in descending order
.map((x, i) => Object.assign({rank: i + 1}, x)); // copy object with rank
console.log("result:", result);
console.log("data:", data); // unchanged

这也适用于负数。