我是网络开发
的新手。在这里,我确实有一个类似于
[{
endOffset: "50"
startOffset: "25"
type: "Education"
},
{
endOffset: "67"
startOffset: "55"
type: "address"
},
{
endOffset: "65"
startOffset: "59"
type: "project"
},
{
endOffset: "80"
startOffset: "70"
type:"fullname"
}]
在这个对象数组中,现在我根据结束偏移量对其进行排序。就像 ->
jsonDataArray.sort(function (a, b) {
return a.startOffset - b.startOffset;
});
然后它给了我排序后的数组。但这里它仅根据 startoffset
进行排序。
我想要的是我想要一个像这样的数组,它将按开始和结束偏移的升序排序,这样数组就会像
[{
starOffset: "25",
type: "Education"
}, {
endOffset: "50"
type: "Education" },
{
startoffset: "55"
type: "address" },
{
startoffset: "59"
type: "project" },
{
endoffset: "65"
type: "project" },
{
endoffset: "67"
type: "address"
},
{
endoffset: "67"
type: "address"
},
{
startOffset: "70"
type: "address"
},
{
endoffset: "80"
type: "address"
},
]
那么,我该怎么做呢?任何人都可以帮我解决这个问题吗?
最佳答案
首先在单独的对象中使用 startOffset
和 endOffset
创建所需的数组,然后您可以为 aVal
和 bVal< 分配值
通过 sort
函数中的条件进行排序,如下代码中所述:
var jsonDataArray = [{
endOffset: "50",
startOffset: "25",
type: "Education"
},
{
endOffset: "67",
startOffset: "65",
type: "address"
},
{
endOffset: "65",
startOffset: "59",
type: "project"
},
{
endOffset: "80",
startOffset: "70",
type:"fullname"
}];
var newJSON = [];
jsonDataArray.forEach((obj)=>{
var tempObj = {
endOffset: obj.endOffset,
type: obj.type
};
newJSON.push(tempObj);
tempObj = {
startOffset: obj.startOffset,
type: obj.type
};
newJSON.push(tempObj);
});
newJSON.sort(function (a, b) {
var aVal = a.startOffset?a.startOffset:a.endOffset;
var bVal = b.startOffset?b.startOffset:b.endOffset;
return aVal - bVal;
});
console.log(newJSON);
关于javascript - 对具有 JavaScript 中偏移量的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50101632/