gpt4 book ai didi

javascript - 通过按索引将对象推送到数组来对数组进行排序

转载 作者:行者123 更新时间:2023-12-03 12:34:52 25 4
gpt4 key购买 nike

我正在解析一个 XML 文件并构建一个对象数组。我获得具有相同 ID 的对象,并且想将它们添加到其他 ID 所在的同一个 INDEX 中。

我尝试通过 ID 和 .push 对象检查相同的 INDEX,但它不起作用。

 if (myData[object.ID] = null)
myData[object.ID] = object;
else {
myData[object.ID].push(object);
}

有什么想法可以制作这样的东西吗?

    myData[0] = {ID: "133", text: "car 1"}
myData[1] = {ID: "143433", text: "car 34"}
myData[2] = {ID: "55", text: "car 12"}
myData[3] = {ID: "66", text: "car51"}, {ID: "66", text: "car56"}, {ID: "66", text: "car 323"}
myData[4] = {ID: "32323", text: "car132"}

编辑:

尝试@sebcap26后,@antur123回答:

if (myData[object.ID] = null) {
myData[object.ID] = [];
}

myData[object.ID].push(object);

我得到的结果是这样的:

myData[undefined × 1,Array[3], Array[1], undefined × 1, Array[3],undefined × 1,undefined × 1,undefined × 1,undefined × 1,Array[1]]

如何删除那些未定义的?

最佳答案

您可以在“myData”对象的每个索引中存储一个数组,如下所示:

if (myData[object.ID] = null) {
myData[object.ID] = [];
}

myData[object.ID].push(object);

生成的“myData”将是:

myData[0] = [{ID: "133", text: "car 1"}]
myData[1] = [{ID: "143433", text: "car 34"}]
myData[2] = [{ID: "55", text: "car 12"}]
myData[3] = [{ID: "66", text: "car51"}, {ID: "66", text: "car56"}, {ID: "66", text: "car 323"}]
myData[4] = [{ID: "32323", text: "car132"}]

如果您只想在出现多次时存储数组,而在任何其他情况下只存储对象,则代码将如下所示:

if (myData[object.ID] = null) {
// If index is empty, store object
myData[object.ID] = object;
} else if (typeof(myData[object.ID]) === 'array') {
// If index has an array, add object to array
myData[object.ID].push(object);
} else {
// If index has an object, create an array and store
// both "old" and "new" objects
var oldObject = myData[object.ID];
myData[object.ID] = [];
myData.push(oldObject);
myData.push(object);
}

但是,这会导致一个奇怪的数据结构,其中对于每个对象索引,有时是一个数组,有时是一个对象。有点难以处理和使用...

在这种情况下,“myData”的结果将是:

myData[0] = {ID: "133", text: "car 1"}
myData[1] = {ID: "143433", text: "car 34"}
myData[2] = {ID: "55", text: "car 12"}
myData[3] = [{ID: "66", text: "car51"}, {ID: "66", text: "car56"}, {ID: "66", text: "car 323"}]
myData[4] = {ID: "32323", text: "car132"}

关于javascript - 通过按索引将对象推送到数组来对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23778491/

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