按等级创建新的对象数组

时间:2017-08-27 18:08:53

标签: javascript json

尝试根据json响应创建一个新对象。

说我得到了

的json回复
methods:{
  web3(){ return web3 }
}

如何创建一个新的对象数组,同时按照差异对每个对象进行排序?

this.web3().someWeb3Prop

只需要了解逻辑如何工作

[{
    "id": "something1", 
    "diff": "0.09"
},     
{
    "id": "something2", 
    "diff": "0.7"
},     
{
    "id": "something3", 
    "diff": "0.1"
}]

4 个答案:

答案 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




这也适用于负数。