Создание массива объектов в javascript для knockout observableArray([])

Я пытаюсь создать ниже » OutputArray «из»InputObject». Я создал функцию getdata (), которая преобразует два объекта.
Когда я пишу эти объекты на консоль в chrome, они отображаются немного по-другому, скриншоты ниже.

OuputObect: (это мой желаемый выход)

{
            "id" : "1",
            "name" : "Name the color",
            "q" : "what is the color white in HTML",
            "a" : "255 255 255",
            "video" : "http://aws.asdfsadf.com/something.mkv",
            "images" : {
                "title" : "White Image",
                "url" : "http://aws.asdfsdf.com/image.jpg"
                }
        },
        {
            "id" : "2",
            "name" : "Name the color",
            "q" : "what is the color black in HTML",
            "a" : "0 0 0",
            "video" : "http://aws.asdfsadf.com/something.mkv",
            "images" : {
                "title" : "White Image",
                "url" : "http://aws.asdfsdf.com/image.jpg"
        }
}

OutputObject должен появиться в chrome следующим образом: console.log (OutputObject)

Правильный выход

Вместо этого выглядит так: console.log (getdata(InputObject))

Неверный вывод

InputObject: (это то, как данные представлены FireDB)

{
        "1" : {
            "name" : "Name the color",
            "q" : "what is the color white in HTML",
            "a" : "255 255 255",
            "video" : "http://aws.asdfsadf.com/something.mkv",
            "images" : {
                "title" : "White Image",
                "url" : "http://aws.asdfsdf.com/image.jpg"
                }
        },
        "2" : {
            "name" : "Name the color",
            "q" : "what is the color black in HTML",
            "a" : "0 0 0",
            "video" : "http://aws.asdfsadf.com/something.mkv",
            "images" : {
                "title" : "White Image",
                "url" : "http://aws.asdfsdf.com/image.jpg"
                }
        }

    }

функция getdata ()…

function getdata(data){

    var array = [];

    for (var key in data) {

        var arrayObject = {};

        // skip loop if the property is from prototype
        if (!data.hasOwnProperty(key)) continue;

        var obj = jsondata.questions[key];
        for (var prop in obj) {
            // skip loop if the property is from prototype
            if(!obj.hasOwnProperty(prop)) continue;
            arrayObject[prop] = obj[prop];
            }

        arrayObject["id"] = key;
        array.push(arrayObject)
    }
return array;
}

1 ответ

  1. Получается, что оба массива равны, они просто по-разному отображаются в chrome.

    Моя проблема заключалась в том, что я звонил ко.observableArray ([OutputObject])

    (в квадратные скобки)

    Вместо:

    нокаут.observableArray (getdata(OutputObject));