gpt4 book ai didi

javascript - 无法对通过 Angular REST 调用接收到的 Javascript 对象数组进行排序

转载 作者:行者123 更新时间:2023-12-03 22:36:35 24 4
gpt4 key购买 nike

我在对 Javascript 对象数组进行排序时遇到了一个相当奇怪的问题。我尝试对一些虚拟数据进行排序并且它有效。出于某种原因,如果我通过 Angular REST 调用获取该对象,我将无法对其进行排序。

消息看起来像这样:

{
"name": "IIB",
"children": [
{
"id": "some_random_id",
"name": "Broker2",
"size": 1627,
"children": []
},
{
"id": "some_random_id",
"name": "Broker1",
"size": 203,
"children": []
}
]
}

我想做的是根据 name 属性对第一级 children 数组进行排序。

我尝试使用 sort() 方法来做到这一点,但出于某种原因,它在这种情况下不起作用:

       // restangular REST call to get that message as "data"
INode.one('topology').get().then(function(data) {

// trying to sort the children array
data.children = data.children.sort(function(a, b) {
if (a.name > b.name) {
return 1;
}
if (a.name < b.name) {
return -1;
}
return 0;
})
console.log(data.children);

});

现在,如果我运行该代码,我的子数组将完全不受影响,并且每次都会随机生成。我还尝试将引用传递给另一个变量并使用它,但它仍然不起作用。

如果我将实际的 JSON 对象直接复制并粘贴到源中,然后对其进行排序,它就会起作用。

如果我使用 jQuery 的 ajax 方法,它也有效:

$.ajax({
type: "GET",
url: "same_url_angular_is_using",
dataType: "json",
success: function(data) {
data.children = data.children.sort(function(a, b) {
if (a.name > b.name) {
return 1;
}
if (a.name < b.name) {
return -1;
}
// a must be equal to b
return 0;
});

console.log(data.children);
},
error: function(error) {
console.error(error);
}
});

我的猜测是它与 Angular 解析 JSON 消息的方式有关。

谁能帮我解决这个问题?

最佳答案

使用Angular copy API并将数据复制到变量并尝试将排序函数应用于新复制的变量。它应该有效。

关于javascript - 无法对通过 Angular REST 调用接收到的 Javascript 对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913900/

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