我有以下代码:
function() {
$.getJSON(
myurl + '/get_data',
function(data) {
function sort_data(first, second) {
return (first.sort - second.sort);
}
console.log(data);
console.log(data.sort(sort_data));
}
... snipped for brevity
数据是对象数组,每个对象都有排序字段,它是整数。默认情况下,它们都是随机顺序。
因此在执行上面的代码之后它告诉我sort之前和之后的数据是相同的。至少两个console.log输出都是相同的(它们是排序的)。但是,如果我跳过排序部分而只是console.log(data.objects) - 它是不同的并且未被排序。
似乎首先执行sort,而之后执行console.logs。为什么会那样?谢谢!
答案 0 :(得分:3)
这是因为console.log()
打印了对象的引用,sort()重新排列了同一对象引用中的数据。
如果你想看到差异,请使用
console.log(JSON.stringify(data));
console.log(JSON.stringify(data.sort(sort_data)));
JSON.stringify()
创建json对象的字符串表示形式,不会受到对json对象所做的任何进一步更改的影响。