FeelRightz
FeelRightz

Reputation: 2979

How to turn $.each object to an array

I have a json, I $.each videolist and try to get the second. Then, I wish to turn the second into array[], easy for me to do next function that I want. Just not sure how to turn it into array.

var videoinfo = [{
    "startdatetime": "2014-12-21 00:23:14",
    "totalsecondrun": "2019402310",
    "videolist": [{
        "videoid": "uoSDF234",
        "second": "10"
    }, {
        "videoid": "0apq3ss",
        "second": "14"
    }]
}];


var calduration = function() {

    var list = videoinfo[0].videolist;

    $.each(list, function(index, value) {
        alert($.makeArray(value.second));
    });

};

calduration();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

I expected the output should be [10,14].

Upvotes: 0

Views: 43

Answers (1)

Josh Crozier
Josh Crozier

Reputation: 240888

If you insist on using a $.each() loop, as you title implies, here is one approach:

var calduration = function () {
    var duration = [];
    $.each(videoinfo[0].videolist, function (index, value) {
        duration.push(parseInt(value.second, 10));
    });

    return duration;
};

Example Here


I'd suggest using $.map(), though:

var calduration = function () {
    return $.map(videoinfo[0].videolist, function (value, index) {
        return parseInt(value.second, 10);
    });
};

..or .map():

return videoinfo[0].videolist.map(function (value, index) {
    return parseInt(value.second, 10);
});

Example Here


And if you want to use plain JS:

var calduration = function () {
    return Array.prototype.map.call(videoinfo[0].videolist, function(value){
        return parseInt(value.second, 10);
    });
};

Example Here

Upvotes: 1

Related Questions