Deep Copy array of objects

by Benjamin DeLong

HTML

<h1>Deep Copy of Array of Objects</h1>
<h2>Original array</h2>
<p id="original"></p>
<h2>Copied array</h2>
<p id="copy"></p>

JavaScript

function deepCopy (arr) {
	var out = [];
	for (var i = 0, len = arr.length; i < len; i++) {
		var item = arr[i];
		var obj = {};
		for (var k in item) {
			obj[k] = item[k];
		}
		out.push(obj);
	}
    return out;
}

var original = [
    {'a' : 1},
    {'b' : 2}
    ];

/* Copy and change (won't affect original) */
var copy = deepCopy(original);
copy[0]['a'] = 'not 1';

/* output proof after copy (changing shallow copies would change both values) */
document.getElementById('original').innerHTML = 'a = ' + original[0]['a'];
document.getElementById('copy').innerHTML = 'a = ' + copy[0]['a'];