Open chopin opened 6 months ago
The sorted() method call the copy() method And the copy() method contains :
export function copy (anObject) {
if (anObject == null || typeof anObject == "object") {
return anObject;
} else {
var result = {};
for (var attrib in obj) {
if (anObject.hasOwnProperty (attrib)) {
result [attrib] = anObject [attrib];
}
}
return result;
}
}
It's bugged If it's an object (an array in your case) it return the object. So useless for a copy method. Otherwise an error occur because "obj" is not know in the loop
The copy method must be something like :
export function copy (anObject) {
if (anObject == null || typeof anObject != "object") {
return anObject;
}
else {
if (anObject instanceof Array){
var res = []
for(var elem of anObject){
res.push(elem)
}
return res
}else{
var result = {};
for (var attrib in anObject) {
if (anObject.hasOwnProperty (attrib)) {
result [attrib] = anObject [attrib];
}
}
return result;
}
}
}
The copy
function that sorted
is using has been re-implemented as part of the new copy
module in dev_3.9.3 branch to be released in v3.9.3
It should work in most cases, but needs a bit more testing.
x.sort() modifies x, but sorted(x) doesn't modify the argument x in Python as following:
But, I encountered a Transcrypted code modifying the argument x in sorted(x):
result:
Based on the example above, it looks like sorted(x) modifies x as x.sort() in Transcrypt. It is not true in Python.