Python Arrays

by Derek Leung

JavaScript

class PythonArray {
    constructor() {
        return new Proxy([], {
            get: function(target, name) {
                var index = parseInt(name, 10);

                if (name === NaN) {
                    if (name in target) return target[name];
                    else throw "Not a number";
                }

                // simple implementation
                if (index < 0) return target[target.length + index];
                else return target[index];
            }
        });
    }

    static from(arr) {
        var pythonArray = new PythonArray();
        for (var i = 0; i < arr.length; i++) {
            pythonArray[i] = arr[i];
        }
        return pythonArray;
    }
}

var arr = PythonArray.from([1, 2, 3]);
console.log(arr[0]);         // 1
console.log(arr[-1]);        // 3
console.log(arr.join("|"));  // still works