Search code examples
javascriptarraysobjectobject-literal

Javascript array/object syntax fail


Why do I get this error with this code: Uncaught SyntaxError: Unexpected token { on line 1.

var cube_points = {
    {'x' : 100, 'y' : 100, 'z' : 100},
    {'x' : 100, 'y' : 100, 'z' : -100},
    {'x' : -100, 'y' : 100, 'z' : -100},
    {'x' : -100, 'y' : 100, 'z' : 100},
    {'x' : 100, 'y' : -100, 'z' : 100},
    {'x' : 100, 'y' : -100, 'z' : -100},
    {'x' : -100, 'y' : -100, 'z' : -100},
    {'x' : -100, 'y' : -100, 'z' : 100}
};

Solution

  • Your outer object's elements have values but no keys. If you want an array of cube points, use the square bracket to denote an array literal:

    var cube_points = [
        {'x' : 100, 'y' : 100, 'z' : 100},
        {'x' : 100, 'y' : 100, 'z' : -100},
        {'x' : -100, 'y' : 100, 'z' : -100},
        {'x' : -100, 'y' : 100, 'z' : 100},
        {'x' : 100, 'y' : -100, 'z' : 100},
        {'x' : 100, 'y' : -100, 'z' : -100},
        {'x' : -100, 'y' : -100, 'z' : -100},
        {'x' : -100, 'y' : -100, 'z' : 100}
    ];
    

    If you want an object, give the items a key. This could be numbers or letters or even objects:

    var cube_points = {
        1: {'x' : 100, 'y' : 100, 'z' : 100},
        2: {'x' : 100, 'y' : 100, 'z' : -100},
        'q': {'x' : -100, 'y' : 100, 'z' : -100},
        'z': {'x' : -100, 'y' : 100, 'z' : 100},
        '25': {'x' : 100, 'y' : -100, 'z' : 100},
        '26': {'x' : 100, 'y' : -100, 'z' : -100},
        10: {'x' : -100, 'y' : -100, 'z' : -100},
        11: {'x' : -100, 'y' : -100, 'z' : 100}
    };
    

    Obviously, using an object necessitates some kind of orderly system of key selection. Since your points aren't easily named, you're better off using an array. But I wanted to show what object literal notation would look like.