gpt4 book ai didi

javascript - Javascript 中不同排序标准的相同输出

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

我正在尝试下面的代码,但不确定为什么输出 1 和输出 2 得到相同的输出。

var nameArray = [{name : "Arindam",age: 26},{name: "Sumit",age:22},{name: "Arnab",age:35},{name: "Rajdeep",age:30}];

nameArray.sort(function(v1,v2){
if(v1.name > v2.name){
return -1;
}else{
return 1;
}
});

console.dir(nameArray);//Output 1

nameArray.sort(function(v1,v2){
if(v1.age < v2.age){
return -1;
}else{
return 1;
}
});

console.log("--------------");
console.dir(nameArray);//output 2

输出 1 和 2 如下所示:

Array[4]
0: Object
age: 22
name: "Sumit"
__proto__: Object
1: Object
age: 26
name: "Arindam"
__proto__: Object
2: Object
age: 30
name: "Rajdeep"
__proto__: Object
3: Object
age: 35
name: "Arnab"

这两个排序函数都是在打印到控制台之前执行的吗?谁能详细解释一下。

最佳答案

您的两个控制台日志都使用相同的变量nameArray,它似乎指向相同的内存地址,或者由于浏览器控制台的原因。

为了解决这个问题,您可以将对象克隆到另一个变量中:

var nameArray = [{
name: "Arindam",
age: 26
}, {
name: "Sumit",
age: 22
}, {
name: "Arnab",
age: 35
}, {
name: "Rajdeep",
age: 30
}];

nameArray.sort(function(v1, v2) {
if (v1.name > v2.name) {
return -1;
} else {
return 1;
}
});

console.dir(nameArray); //Output 1

//Clone nameArray into nameArray2
nameArray2 = JSON.parse(JSON.stringify(nameArray));

nameArray2.sort(function(v1, v2) {
if (v1.age < v2.age) {
return -1;
} else {
return 1;
}
});

console.log("--------------");
console.dir(nameArray2); //output 2

关于javascript - Javascript 中不同排序标准的相同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850000/

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