Example: DataSchema.Array

DataSchema.Array normalizes arbitrary JavaScript array data against a given schema into an object with known properties.

Array of objects

Data
[
    {make:"Chevrolet", model:"Bel Air", year:1957},
    {make:"Dodge", model:"Dart", year:1964},
    {make:"Ford", model:"Mustang", year:1968}
]
    
Schema
{
    resultFields: [{key:"make"}, {key:"model"}, {key:"year"}]
}
    
Normalized data

Array of arrays

Data
[
    ["Chevrolet", "Bel Air", 1957],
    ["Dodge", "Dart", 1964],
    ["Ford", "Mustang", 1968]
]
    
Schema
{
    resultFields: [{key:"make"}, {key:"model"}, {key:"year"}]
}
    
Normalized data

Simple array of primitives

Data
[
    "1957 Chevrolet Bel Air", "1964 Dodge Dart", "1968 Ford Mustang"
]
    
Schema
{
    resultFields: [{key:"make"}, {key:"model"}, {key:"year"}]
}
    
Normalized data

In order to use DataSchema.Array, input data must be a JavaScript array. Within that array, you may have...

...JavaScript objects

YUI().use("dataschema-array", function(Y) {
    var data_in = [
            {make:"Chevrolet",model:"Bel Air",year:1957},
            {make:"Dodge",model:"Dart",year:1964},
            {make:"Ford",model:"Mustang",year:1968}
        ],
        schema = {
            // Or simply: ["make", "model", "year"]
            resultFields: [{key:"make"}, {key:"model"}, {key:"year"}]
        },
        data_out = Y.DataSchema.Array.apply(schema, data_in));

    alert(data_out);
});

...JavaScript arrays

YUI().use("dataschema-array", function(Y) {
    var data_in = [
            ["Chevrolet", "Bel Air", 1957],
            ["Dodge", "Dart", 1964],
            ["Ford", "Mustang", 1968]
        ],
        schema = {
            // Or simply: ["make", "model", "year"]
            resultFields: [{key:"make"}, {key:"model"}, {key:"year"}]
        },
        data_out = Y.DataSchema.Array.apply(schema, data_in));

    alert(data_out);
});

...primitive data types

YUI().use("dataschema-array", function(Y) {
    var data_in = [
            "1957 Chevrolet Bel Air", "1964 Dodge Dart", "1968 Ford Mustang"
        ],
        schema = {
            // Or simply: ["make", "model", "year"]
            resultFields: [{key:"make"}, {key:"model"}, {key:"year"}]
        },
        data_out = Y.DataSchema.Array.apply(schema, data_in));

    alert(data_out);
});

...or even a combination.

YUI().use("dataschema-array", function(Y) {
    var data_in = [
            {make:"Chevrolet",model:"Bel Air",year:1957},
            ["Dodge", "Dart", 1964],
            "1968 Ford Mustang"
        ],
        schema = {
            // Or simply: ["make", "model", "year"]
            resultFields: [{key:"make"}, {key:"model"}, {key:"year"}]
        },
        data_out = Y.DataSchema.Array.apply(schema, data_in));

    alert(data_out);
});