This is my code
const assert = require('assert');
function cloneObject(obj) {
var clone = Object.create(obj);
for (var key in obj) {
if (obj[key] != null && typeof obj[key] == 'object')
clone[key] = cloneObject(obj[key]);
else clone[key] = obj[key];
}
return clone;
}
var obj = {
name: 'Vikram',
age: 21,
place: {
country: 'India',
state: 'Karnataka',
},
marks: [1, 2, 3, 4],
parents: {
father: 'Ramesh',
mother: 'Suma',
siblings: {
name: 'Asha',
age: '15',
},
},
};
var newObj = cloneObject(obj);
obj.parents.siblings.name = 'John';
newObj.parents.siblings.name = 'Edwin';
console.log(newObj.marks);
assert.deepEqual(Array.isArray(newObj.marks), true, 'should be an array?'); // returns actual value as false
assert(obj.parents.siblings.name === 'John');
assert(newObj.parents.siblings.name === 'Edwin');
The isArray() functions returns false , but
console.log(newObj.marks)
prints
Array { '0': 1, '1': 2, '2': 3, '3': 4 }
I know that array is also an object in JavaScript, but the isArray() function should return "True" right? The newObj.marks is now an array or object? The isArray() returns false but in console it displays "Array".