gpt4 book ai didi

javascript - 在 Javascript 中对具有特定异常的对象数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:34 25 4
gpt4 key购买 nike

我有一个对象数组,其中一些元素是另一个元素的克隆,因此它们有一个引用原始元素另一个属性的属性(简化示例):

var a = [{
id: 'x0',
name: 'Foo',
isClone: false,
wasCloned: true,
originalId: ''
}, {
id: 'y1',
name: 'Bar'.
isClone: false,
wasCloned: false,
originalId: ''
}, {
id: 'z2',
name: 'Foo',
isClone: true,
wasCloned: false,
originalId: 'x0'
}];

在这个例子中,第三个元素引用了第一个元素的 id - 这使得它成为那个意义上的克隆。不幸的是,id 不是递增的/按时间顺序排列的,基本上可以是任何随机字符串。

现在,手头的任务是以这样一种方式对数组进行排序,以便克隆总是放置在数组位置的右边之前其原始位置.如果数组元素不是克隆,则排序应照常进行。换句话说,一旦排序,此示例中的顺序将为 2,0,1

我试图弄清楚如何为此使用 Array.sort,但无法真正理解它。这基本上就是我所拥有的(这是行不通的):

var sortedA = a.sort(function(one, other) {
var sorted;
if (one.id == other.originalId) {
sorted = -1;
} else {
sorted = 0;
}
return sorted;
});

如有任何帮助,我们将不胜感激,谢谢。

最佳答案

你应该使用下面的排序函数:

var sorted = a.sort(
function (a, b) {
var compareA = a.originalId || a.id;
var compareB = b.originalId || b.id;

if (compareA < compareB) {
return -1;
} else if (compareA > compareB) {
return 1;
} else {
return a.originalId !== '' ? -1 : 1;
}
}
);

可用的函数示例 here .

关于javascript - 在 Javascript 中对具有特定异常的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29165471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com