I have a code snippet where I am trying to remove some properties from an object.
let users = [{name: "a", prop1: 1, prop2: 2},{name: "b", prop1: 2, prop2: 2}, {name: "c", prop1: 3, prop2: 2}];
console.log("before deleting property", users);
for (var i = 0; i < users.length; i++) {
delete users[i]['name'];
}
console.log("after deleting property", users);
When I run this code in NodeJS
my output is:
before deleting property [ { name: 'a', prop1: 1, prop2: 2 },
{ name: 'b', prop1: 2, prop2: 2 },
{ name: 'c', prop1: 3, prop2: 2 } ]
after deleting property [ { prop1: 1, prop2: 2 },
{ prop1: 2, prop2: 2 },
{ prop1: 3, prop2: 2 } ]
However, when I am executing the same code in the browser (Google Chrome Version 73.0.3683.103 (Official Build) (64-bit) - Mac OS) the output changes (Property is removed in both the log messages):
Related jsFiddle: https://jsfiddle.net/abhas9/f0erjhv2/12/
However, if I change the log message to say:
console.log("before deleting property", JSON.stringify(users));
I am getting the expected output.
Am I missing something? Is this browser's way of optimizing log statements in developer tools? If so, are there any related specifications?