I have a mixcloud show embedded on my page.
For example:
<iframe width="660" height="180" src="//www.mixcloud.com/widget/iframe/?feed=http%3A%2F%2Fwww.mixcloud.com%2Fdjzhao%2Fjuju-juke-shangaan-footwork%2F&embed_uuid=cd8d4d1b-9940-4548-9aff-1f411f5480c0&replace=0&hide_cover=1&embed_type=widget_standard&hide_tracklist=1" frameborder="0"></iframe>
I'd like to be able to change the text displayed depending on which track is currently being played. Is there a way to detect which track is being played or the current play time and change the text accordingly?
The mixcloud api can return the information for a cloudcast that includes the track list and time at which they start like so:
{
"description": "Given I'm on the Mixcloud team, I thought I really should have something up here. Here's an hour's worth of funky music to get you ready for partying, enjoy the music and ignore the quality (or lack thereof) of the DJ!",
"tags": [
{
"url": "http://www.mixcloud.com/tag/funky-house/",
"name": "Funky house",
"key": "/tag/funky-house/"
},
{
"url": "http://www.mixcloud.com/tag/funk/",
"name": "Funk",
"key": "/tag/funk/"
},
{
"url": "http://www.mixcloud.com/tag/soul/",
"name": "Soul",
"key": "/tag/soul/"
}
],
"play_count": 1864,
"user": {
"url": "http://www.mixcloud.com/spartacus/",
"username": "spartacus",
"name": "Spartacus",
"key": "/spartacus/",
"pictures": {
"medium": "http://images-mix.netdna-ssl.com/w/100/h/100/q/85/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg",
"320wx320h": "http://images-mix.netdna-ssl.com/w/320/h/320/q/85/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg",
"extra_large": "http://images-mix.netdna-ssl.com/w/600/h/600/q/85/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg",
"large": "http://images-mix.netdna-ssl.com/w/300/h/300/q/85/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg",
"640wx640h": "http://images-mix.netdna-ssl.com/w/640/h/640/q/85/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg",
"medium_mobile": "http://images-mix.netdna-ssl.com/w/80/h/80/q/75/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg",
"small": "http://images-mix.netdna-ssl.com/w/25/h/25/q/85/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg",
"thumbnail": "http://images-mix.netdna-ssl.com/w/50/h/50/q/85/upload/images/profile/dfefd1a8-3932-47e1-bbd3-ac5fd2144d80.jpg"
}
},
"key": "/spartacus/party-time/",
"created_time": "2009-08-02T16:55:01Z",
"audio_length": 3361,
"slug": "party-time",
"favorite_count": 11,
"listener_count": 90,
"name": "Party Time",
"url": "http://www.mixcloud.com/spartacus/party-time/",
"pictures": {
"medium": "http://images-mix.netdna-ssl.com/w/100/h/100/q/85/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png",
"320wx320h": "http://images-mix.netdna-ssl.com/w/320/h/320/q/85/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png",
"extra_large": "http://images-mix.netdna-ssl.com/w/600/h/600/q/85/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png",
"large": "http://images-mix.netdna-ssl.com/w/300/h/300/q/85/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png",
"640wx640h": "http://images-mix.netdna-ssl.com/w/640/h/640/q/85/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png",
"medium_mobile": "http://images-mix.netdna-ssl.com/w/80/h/80/q/75/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png",
"small": "http://images-mix.netdna-ssl.com/w/25/h/25/q/85/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png",
"thumbnail": "http://images-mix.netdna-ssl.com/w/50/h/50/q/85/upload/images/extaudio/61a1279f-e3c0-4871-aa8e-c4cf5466edb8.png"
},
"updated_time": "2013-10-15T13:48:53Z",
"comment_count": 3,
"sections": [
{
"track": {
"url": "http://www.mixcloud.com/track/jazztronik/samurai-12-mix/",
"artist": {
"url": "http://www.mixcloud.com/artist/jazztronik/",
"name": "Jazztronik",
"key": "/artist/jazztronik/",
"slug": "jazztronik"
},
"name": "Samurai (12\" Mix)",
"key": "/track/jazztronik/samurai-12-mix/",
"slug": "samurai-12-mix"
},
"position": 1,
"start_time": 0,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/time-of-your-life/refresher/",
"artist": {
"url": "http://www.mixcloud.com/artist/time-of-your-life/",
"name": "Time of your life",
"key": "/artist/time-of-your-life/",
"slug": "time-of-your-life"
},
"name": "Refresher",
"key": "/track/time-of-your-life/refresher/",
"slug": "refresher"
},
"position": 2,
"start_time": 416,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/dutch/my-time-feat-crystal-waters/",
"artist": {
"url": "http://www.mixcloud.com/artist/dutch/",
"name": "Dutch",
"key": "/artist/dutch/",
"slug": "dutch"
},
"name": "My time (feat. Crystal Waters)",
"key": "/track/dutch/my-time-feat-crystal-waters/",
"slug": "my-time-feat-crystal-waters"
},
"position": 3,
"start_time": 716,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/minimal-funk/definition-of-house/",
"artist": {
"url": "http://www.mixcloud.com/artist/minimal-funk/",
"name": "Minimal Funk",
"key": "/artist/minimal-funk/",
"slug": "minimal-funk"
},
"name": "Definition of House",
"key": "/track/minimal-funk/definition-of-house/",
"slug": "definition-of-house"
},
"position": 4,
"start_time": 1061,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/mint-royale/i-dont-know/",
"artist": {
"url": "http://www.mixcloud.com/artist/mint-royale/",
"name": "Mint Royale",
"key": "/artist/mint-royale/",
"slug": "mint-royale"
},
"name": "I dont know",
"key": "/track/mint-royale/i-dont-know/",
"slug": "i-dont-know"
},
"position": 5,
"start_time": 1500,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/michael-jackson/thrill-her/",
"artist": {
"url": "http://www.mixcloud.com/artist/michael-jackson/",
"name": "Michael Jackson",
"key": "/artist/michael-jackson/",
"slug": "michael-jackson"
},
"name": "Thrill Her",
"key": "/track/michael-jackson/thrill-her/",
"slug": "thrill-her"
},
"position": 6,
"start_time": 1763,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/elio-isola/happy-featcharlise/",
"artist": {
"url": "http://www.mixcloud.com/artist/elio-isola/",
"name": "Elio Isola",
"key": "/artist/elio-isola/",
"slug": "elio-isola"
},
"name": "Happy (feat.Charlise)",
"key": "/track/elio-isola/happy-featcharlise/",
"slug": "happy-featcharlise"
},
"position": 7,
"start_time": 2123,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/erick-morillo-harry-romero-jose-nunez-feat-jessica-eve/dancin/",
"artist": {
"url": "http://www.mixcloud.com/artist/erick-morillo-harry-romero-jose-nunez-feat-jessica-eve/",
"name": "Erick Morillo, Harry Romero & Jose Nunez feat. Jessica Eve",
"key": "/artist/erick-morillo-harry-romero-jose-nunez-feat-jessica-eve/",
"slug": "erick-morillo-harry-romero-jose-nunez-feat-jessica-eve"
},
"name": "Dancin",
"key": "/track/erick-morillo-harry-romero-jose-nunez-feat-jessica-eve/dancin/",
"slug": "dancin"
},
"position": 8,
"start_time": 2442,
"section_type": "track"
},
{
"track": {
"url": "http://www.mixcloud.com/track/kosheen/all-in-my-head/",
"artist": {
"url": "http://www.mixcloud.com/artist/kosheen/",
"name": "Kosheen",
"key": "/artist/kosheen/",
"slug": "kosheen"
},
"name": "All in my head",
"key": "/track/kosheen/all-in-my-head/",
"slug": "all-in-my-head"
},
"position": 9,
"start_time": 2738,
"section_type": "track"
}
]
}
Thanks for any help
MixCloud released in 2014 a JavaScript API/SDK which communicates with the iframe:
https://www.mixcloud.com/developers/widget/
It uses window.postMessage for all communication with the iframe.
For example:
<iframe id="mixcloud-iframe" width="100%" height="60" src="https://www.mixcloud.com/widget/iframe/?feed=https://www.mixcloud.com/thisgreedypig/the-pigs-ear-money-ex-records-show-case/&hide_cover=1&mini=1&light=1" frameborder="0"></iframe>
<script src="//widget.mixcloud.com/media/js/widgetApi.js" type="text/javascript"></script>
<script type="text/javascript">
var widget = Mixcloud.PlayerWidget(document.getElementById('mixcloud-iframe'));
function togglePlayPause () {
// handle the ui
}
widget.ready.then(function() {
widget.events.pause.on(togglePlayPause);
widget.events.play.on(togglePlayPause);
});
</script>
Related
how can I loop through this JSON in JavaScript and check whether a user's id exists? This data is from an image annotation collection and I am going to need to prevent a user from editing someone else's annotations.
In this example, lets just say that user id I am looking for is K2Lb1R7owqR9BYmpJAJzrg6w1s92 from the creator: key.
I tried using for example arr.includes() but didn't work for me.
What is my expected output? I think for now I need to just worry whether a user's id exists or not and if so, return false or true.
The creator object will always be present inside the body.
Thank you for your help.
[{
"body": [{
"created": "2020-07-03T11:49:32.058Z",
"purpose": "commenting",
"value": "don't move me",
"creator": {
"id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2",
"name": "testme"
},
"type": "TextualBody"
}, {
"purpose": "tagging",
"value": "move",
"creator": {
"name": "testme",
"id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2"
},
"type": "TextualBody",
"created": "2020-07-03T11:49:30.850Z"
}],
"id": "IRCJPsz4NKkiuhVLE1hR",
"photoDocId": "92wNwz2aaqy7CWf3mGo1",
"#context": "http://www.w3.org/ns/anno.jsonld",
"type": "Annotation",
"target": {
"source": "https://firebasestorage.googleapis.com/v0/b/vue-photoapp-api.appspot.com/o/photos%2Fmountains-hero.jpg?alt=media&token=fbe93188-d13d-4a7f-a472-4a529aa565a0",
"selector": {
"conformsTo": "http://www.w3.org/TR/media-frags/",
"type": "FragmentSelector",
"value": "xywh=pixel:582.6087036132812,114.49275207519531,98.55072021484375,189.85508728027344"
}
}
}, {
"body": [{
"purpose": "commenting",
"type": "TextualBody",
"creator": {
"name": "doss",
"id": "K2Lb1R7owqR9BYmpJAJzrg6w1s92"
},
"value": "anyone ever climb this mountain top?",
"created": "2020-07-03T10:57:40.590Z"
}, {
"creator": {
"id": "K2Lb1R7owqR9BYmpJAJzrg6w1s92",
"name": "doss"
},
"purpose": "tagging",
"value": "ridge",
"type": "TextualBody",
"created": "2020-07-03T10:57:39.351Z"
}, {
"value": "i did in 2005",
"created": "2020-07-03T10:59:45.318Z",
"type": "TextualBody",
"creator": {
"name": "testme",
"id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2"
},
"purpose": "commenting"
}, {
"type": "TextualBody",
"created": "2020-07-03T10:59:43.966Z",
"purpose": "tagging",
"value": "testme",
"creator": {
"id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2",
"name": "testme"
}
}, {
"type": "TextualBody",
"purpose": "replying",
"value": "test",
"creator": {
"name": "doss",
"id": "K2Lb1R7owqR9BYmpJAJzrg6w1s92"
},
"created": "2020-07-03T11:39:18.860Z"
}],
"type": "Annotation",
"#context": "http://www.w3.org/ns/anno.jsonld",
"photoDocId": "92wNwz2aaqy7CWf3mGo1",
"target": {
"selector": {
"value": "xywh=pixel:247.82608032226562,73.91304016113281,233.33334350585938,240.57972717285156",
"conformsTo": "http://www.w3.org/TR/media-frags/",
"type": "FragmentSelector"
},
"source": "https://firebasestorage.googleapis.com/v0/b/vue-photoapp-api.appspot.com/o/photos%2Fmountains-hero.jpg?alt=media&token=fbe93188-d13d-4a7f-a472-4a529aa565a0"
},
"id": "IlI7SRjFm8qohmHDLBw2"
}]
You can make use of flatMap to get flat data in array then using some to find out whether the value is present or not:
var array=[{ "body": [{ "created": "2020-07-03T11:49:32.058Z", "purpose": "commenting", "value": "don't move me", "creator": { "id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2", "name": "testme" }, "type": "TextualBody" }, { "purpose": "tagging", "value": "move", "creator": { "name": "testme", "id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2" }, "type": "TextualBody", "created": "2020-07-03T11:49:30.850Z" }], "id": "IRCJPsz4NKkiuhVLE1hR", "photoDocId": "92wNwz2aaqy7CWf3mGo1", "#context": "http://www.w3.org/ns/anno.jsonld", "type": "Annotation", "target": { "source": "https://firebasestorage.googleapis.com/v0/b/vue-photoapp-api.appspot.com/o/photos%2Fmountains-hero.jpg?alt=media&token=fbe93188-d13d-4a7f-a472-4a529aa565a0", "selector": { "conformsTo": "http://www.w3.org/TR/media-frags/", "type": "FragmentSelector", "value": "xywh=pixel:582.6087036132812,114.49275207519531,98.55072021484375,189.85508728027344" } }}, { "body": [{ "purpose": "commenting", "type": "TextualBody", "creator": { "name": "doss", "id": "K2Lb1R7owqR9BYmpJAJzrg6w1s92" }, "value": "anyone ever climb this mountain top?", "created": "2020-07-03T10:57:40.590Z" }, { "creator": { "id": "K2Lb1R7owqR9BYmpJAJzrg6w1s92", "name": "doss" }, "purpose": "tagging", "value": "ridge", "type": "TextualBody", "created": "2020-07-03T10:57:39.351Z" }, { "value": "i did in 2005", "created": "2020-07-03T10:59:45.318Z", "type": "TextualBody", "creator": { "name": "testme", "id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2" }, "purpose": "commenting" }, { "type": "TextualBody", "created": "2020-07-03T10:59:43.966Z", "purpose": "tagging", "value": "testme", "creator": { "id": "0qbvzjI3llhyIrKVO6PZxcZUSiI2", "name": "testme" } }, { "type": "TextualBody", "purpose": "replying", "value": "test", "creator": { "name": "doss", "id": "K2Lb1R7owqR9BYmpJAJzrg6w1s92" }, "created": "2020-07-03T11:39:18.860Z" }], "type": "Annotation", "#context": "http://www.w3.org/ns/anno.jsonld", "photoDocId": "92wNwz2aaqy7CWf3mGo1", "target": { "selector": { "value": "xywh=pixel:247.82608032226562,73.91304016113281,233.33334350585938,240.57972717285156", "conformsTo": "http://www.w3.org/TR/media-frags/", "type": "FragmentSelector" }, "source": "https://firebasestorage.googleapis.com/v0/b/vue-photoapp-api.appspot.com/o/photos%2Fmountains-hero.jpg?alt=media&token=fbe93188-d13d-4a7f-a472-4a529aa565a0" }, "id": "IlI7SRjFm8qohmHDLBw2"}];
var result = array.flatMap(elem=>elem.body).some(user=>user.creator.id==='K2Lb1R7owqR9BYmpJAJzrg6w1s92');
console.log(result);
some will return either true or false, which is what you need here.
I hope this helps.
You can make use of the some function:
const data = [{"body":[{"created":"2020-07-03T11:49:32.058Z","purpose":"commenting","value":"don't move me","creator":{"id":"0qbvzjI3llhyIrKVO6PZxcZUSiI2","name":"testme"},"type":"TextualBody"},{"purpose":"tagging","value":"move","creator":{"name":"testme","id":"0qbvzjI3llhyIrKVO6PZxcZUSiI2"},"type":"TextualBody","created":"2020-07-03T11:49:30.850Z"}],"id":"IRCJPsz4NKkiuhVLE1hR","photoDocId":"92wNwz2aaqy7CWf3mGo1","#context":"http://www.w3.org/ns/anno.jsonld","type":"Annotation","target":{"source":"https://firebasestorage.googleapis.com/v0/b/vue-photoapp-api.appspot.com/o/photos%2Fmountains-hero.jpg?alt=media&token=fbe93188-d13d-4a7f-a472-4a529aa565a0","selector":{"conformsTo":"http://www.w3.org/TR/media-frags/","type":"FragmentSelector","value":"xywh=pixel:582.6087036132812,114.49275207519531,98.55072021484375,189.85508728027344"}}},{"body":[{"purpose":"commenting","type":"TextualBody","creator":{"name":"doss","id":"K2Lb1R7owqR9BYmpJAJzrg6w1s92"},"value":"anyone ever climb this mountain top?","created":"2020-07-03T10:57:40.590Z"},{"creator":{"id":"K2Lb1R7owqR9BYmpJAJzrg6w1s92","name":"doss"},"purpose":"tagging","value":"ridge","type":"TextualBody","created":"2020-07-03T10:57:39.351Z"},{"value":"i did in 2005","created":"2020-07-03T10:59:45.318Z","type":"TextualBody","creator":{"name":"testme","id":"0qbvzjI3llhyIrKVO6PZxcZUSiI2"},"purpose":"commenting"},{"type":"TextualBody","created":"2020-07-03T10:59:43.966Z","purpose":"tagging","value":"testme","creator":{"id":"0qbvzjI3llhyIrKVO6PZxcZUSiI2","name":"testme"}},{"type":"TextualBody","purpose":"replying","value":"test","creator":{"name":"doss","id":"K2Lb1R7owqR9BYmpJAJzrg6w1s92"},"created":"2020-07-03T11:39:18.860Z"}],"type":"Annotation","#context":"http://www.w3.org/ns/anno.jsonld","photoDocId":"92wNwz2aaqy7CWf3mGo1","target":{"selector":{"value":"xywh=pixel:247.82608032226562,73.91304016113281,233.33334350585938,240.57972717285156","conformsTo":"http://www.w3.org/TR/media-frags/","type":"FragmentSelector"},"source":"https://firebasestorage.googleapis.com/v0/b/vue-photoapp-api.appspot.com/o/photos%2Fmountains-hero.jpg?alt=media&token=fbe93188-d13d-4a7f-a472-4a529aa565a0"},"id":"IlI7SRjFm8qohmHDLBw2"}]
console.log(data.some(({body}) => body.some(({creator}) => creator.id === 'K2Lb1R7owqR9BYmpJAJzrg6w1s92')));
I am sending an array of objects from the backend to the Vue frontend that looks like this in the postman:
[
{
"ID": 112,
"menu_order": 1,
"title": "Nyheter",
"slug": "hjem",
"url": "/nyheter",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 159,
"menu_order": 2,
"title": "HivNorge mener",
"slug": "hivnorge-mener",
"url": "/post/bli-frivillig",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 160,
"menu_order": 3,
"submenu": [
{
"ID": 3307,
"menu_order": 4,
"title": "Hva er hiv?",
"slug": "hva-er-hiv",
"url": "/post/hva-er-hiv",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3292,
"menu_order": 5,
"title": "Hva er aids?",
"slug": "hva-er-aids",
"url": "/post/hva-er-aids",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3280,
"menu_order": 6,
"title": "Hivtesten",
"slug": "hivtesten",
"url": "/post/hivtesten",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 6308,
"menu_order": 7,
"title": "PEP og PrEP",
"slug": "pep-og-prep",
"url": "/post/pep-og-prep",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3252,
"menu_order": 8,
"title": "Smitteveier",
"slug": "smitteveier",
"url": "/post/smitteveier",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 6610,
"menu_order": 9,
"title": "Nye retningslinjer for hivbehandling",
"slug": "nye-retningslinjer-for-hivbehandling",
"url": "/post/nye-retningslinjer-for-hivbehandling",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 7172,
"menu_order": 10,
"title": "Quiz",
"slug": "quiz",
"url": "/type/quiz",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 145,
"menu_order": 11,
"submenu": [
{
"ID": 5141,
"menu_order": 12,
"title": "Straffeloven",
"slug": "straffeloven-2",
"url": "/post/straffeloven-1",
"status": "publish",
"main_category": "Hovedmeny"
}
],
"title": "Hiv og juss",
"slug": "hiv-og-juss",
"url": "/folder/hiv-og-juss",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3040,
"menu_order": 13,
"submenu": [
{
"ID": 3474,
"menu_order": 14,
"title": "Kriminalisering",
"slug": "kriminalisering",
"url": "/post/kriminalisering-2",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 4017,
"menu_order": 15,
"title": "FN og aids",
"slug": "fn-og-aids",
"url": "/post/fn-og-aids",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3971,
"menu_order": 16,
"title": "Kort historie",
"slug": "kort-historie",
"url": "/post/kort-historie",
"status": "publish",
"main_category": "Hovedmeny"
}
],
"title": "Hiv i verden",
"slug": "hiv-i-verden",
"url": "/folder/hiv-i-verden",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3088,
"menu_order": 17,
"title": "Statistikk",
"slug": "statistikk",
"url": "/post/statistikk-2",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3102,
"menu_order": 18,
"title": "Andres materiell",
"slug": "andres-materiell",
"url": "/post/andres-materiell",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 5667,
"menu_order": 19,
"title": "Andres aktiviteter",
"slug": "andres-aktiviteter",
"url": "/post/andres-aktiviteter",
"status": "publish",
"main_category": "Hovedmeny"
}
],
"title": "Om hiv",
"slug": "om-hivaids",
"url": "/folder/om-hiv",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3050,
"menu_order": 20,
"submenu": [
{
"ID": 3310,
"menu_order": 21,
"title": "Sekretariatet",
"slug": "sekretariatet",
"url": "/post/sekretariatet",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3296,
"menu_order": 22,
"title": "Styret",
"slug": "styret",
"url": "/post/styret",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 4449,
"menu_order": 23,
"title": "Strategiplan",
"slug": "strategiplan",
"url": "/post/strategiplan",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3276,
"menu_order": 24,
"title": "Vedtekter",
"slug": "vedtekter",
"url": "/post/vedtekter",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3235,
"menu_order": 25,
"title": "Årsmeldinger",
"slug": "arsmeldinger",
"url": "/post/aarsmeldinger",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3211,
"menu_order": 26,
"title": "Medlemmer",
"slug": "medlemmer",
"url": "/post/medlemmer",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3156,
"menu_order": 27,
"title": "Her er vi",
"slug": "her-er-vi",
"url": "/post/her-er-vi",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 5355,
"menu_order": 28,
"title": "Historie",
"slug": "historie-2",
"url": "/post/historie-1",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 3254,
"menu_order": 29,
"title": "Retningslinjer",
"slug": "retningslinjer",
"url": "/post/retningslinjer",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 5486,
"menu_order": 30,
"title": "Gave",
"slug": "gave",
"url": "/post/gave",
"status": "publish",
"main_category": "Hovedmeny"
},
{
"ID": 5781,
"menu_order": 31,
"title": "Bli frivillig",
"slug": "bli-frivillig",
"url": "/post/bli-frivillig",
"status": "publish",
"main_category": "Hovedmeny"
}
],
"title": "Om oss",
"slug": "om-oss",
"url": "/folder/om-oss",
"status": "publish",
"main_category": "Hovedmeny"
}
]
I am using Axios for ajax requests, what I don't get is why is this array interpreted as an object when I get it in the frontend. When I am making a call to the backend:
BACKEND.get('/menu')
.then(res => {
console.log(res.data);
commit('setMenus', res.data);
})
In the console res.data I get an object that consist of objects that are elements of the array above, what I get looks like this, (it is a very stripped down example):
{1: {…}, 2: {…}, 3: {…}, 13: {…}}
1:Object
ID:7406
main_category:"Hovedmeny"
menu_order:1
slug:"nyheter"
title:"Nyheter"
url:"/nyheter"
...so on
Why is this happening?
How do I remove substring "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\n" from href example below?
I trying web scrape using Kimonolabs. I am a novice but output has 2 "http://" for some reason
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/healthcare-and-medical-jobs/qualified-flexible-carers/23434",
{
"name": "DoneDealTitleWexford",
"count": 20,
"frequency": "Manual Crawl",
"version": 6,
"newdata": true,
"lastrunstatus": "success",
"thisversionstatus": "success",
"thisversionrun": "Sun Jun 14 2015 11:40:14 GMT+0000 (UTC)",
"results": {
"collection1": [
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/healthcare-and-medical-jobs/qualified-flexible-carers/23434",
"text": "Qualified Flexible Carer(s)",
"title": "Qualified Flexible Carer(s)"
},
"index": 1,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/motor-mechanic-jobs/apprentice-mechanic/23454",
"text": "Apprentice Mechanic",
"title": "Apprentice Mechanic"
},
"index": 2,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/sales-jobs/full-time-summer-job-with-a-base-wage-uncapped-commission/24432",
"text": "Full-time summer job with a base wage + uncapped commission",
"title": "Full-time summer job with a base wage + uncapped commission"
},
"index": 3,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/sales-jobs/residential-sales-team-leader/24431",
"text": "Residential Sales Team Leader",
"title": "Residential Sales Team Leader"
},
"index": 4,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/pharmaceutical-and-science-jobs/associate-scientist/24506",
"text": "Associate Scientist",
"title": "Associate Scientist"
},
"index": 5,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/restaurant-and-catering-jobs/restaurant-manager/24505",
"text": "Restaurant Manager",
"title": "Restaurant Manager"
},
"index": 6,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/pharmaceutical-and-science-jobs/microbiologist-qa-specialist/24504",
"text": "Microbiologist/ QA Specialist",
"title": "Microbiologist/ QA Specialist "
},
"index": 7,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/pharmaceutical-and-science-jobs/quality-control-analyst-/24500",
"text": "Quality Control Analyst.",
"title": "Quality Control Analyst."
},
"index": 8,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/accountancy-and-finance-jobs/retail-cash-office-job-in-dublin/24497",
"text": "Retail Cash Office Job in Dublin",
"title": "Retail Cash Office Job in Dublin "
},
"index": 9,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/project-manager-jobs/project-manager-translation-localisation/24496",
"text": "Project Manager - Translation / Localisation",
"title": "Project Manager - Translation / Localisation"
},
"index": 10,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/pharmaceutical-and-science-jobs/regulatory-affairs-specialist/24495",
"text": "Regulatory Affairs Specialist",
"title": "Regulatory Affairs Specialist "
},
"index": 11,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/manufacturing-jobs/sign-makers/24494",
"text": "Sign Makers",
"title": "Sign Makers"
},
"index": 12,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/hotel-jobs/bakery-supervisor-job-in-cork/24493",
"text": "Bakery Supervisor Job in Cork",
"title": "Bakery Supervisor Job in Cork "
},
"index": 13,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/hotel-jobs/baker-job-in-cork-city/24492",
"text": "Baker Job in Cork City",
"title": "Baker Job in Cork City "
},
"index": 14,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/hotel-jobs/duty-manager/24491",
"text": "Duty Manager",
"title": "Duty Manager"
},
"index": 15,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/accountancy-and-finance-jobs/senior-accounts-assistant-accounting-technician/24489",
"text": "Senior Accounts Assistant / Accounting Technician",
"title": "Senior Accounts Assistant / Accounting Technician"
},
"index": 16,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/accountancy-and-finance-jobs/accountant-senior-accounting-technician-german-speaking/24488",
"text": "Accountant / Senior Accounting Technician (German Speaking)",
"title": "Accountant / Senior Accounting Technician (German Speaking) "
},
"index": 17,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/accountancy-and-finance-jobs/credit-controller/24487",
"text": "Credit Controller",
"title": "Credit Controller"
},
"index": 18,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/accountancy-and-finance-jobs/revenue-analyst/24486",
"text": "Revenue Analyst",
"title": "Revenue Analyst"
},
"index": 19,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
},
{
"Title": {
"href": "http://jobs.donedeal.ie/search/\n\n\n\n\n\n\n\n\nhttp://jobs.donedeal.ie/view/accountancy-and-finance-jobs/accounts-receivable-team-lead-multiples-retail/24485",
"text": "Accounts Receivable Team Lead – Multiples / Retail",
"title": "Accounts Receivable Team Lead – Multiples / Retail"
},
"index": 20,
"url": "http://jobs.donedeal.ie/search/find&county=Wexford&Submit=Search"
}
]
}
}
I have this collection: https://graph.facebook.com/2playcz/albums
This collection contains 8 id. How can i get the total count id of this collection using javascript? (Total = 8)
Source:
{
"data": [
{
"id": "201936779932071",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Tr\u00e9ninky",
"link": "https://www.facebook.com/album.php?fbid=201936779932071&id=190320081093741&aid=41883",
"cover_photo": "201937046598711",
"count": 8,
"type": "normal",
"created_time": "2012-07-02T09:33:43+0000",
"updated_time": "2012-09-15T12:05:44+0000",
"can_upload": false,
"likes": {
"data": [
{
"id": "1788805921",
"name": "Edita Nov\u00e1"
},
{
"id": "100001449904219",
"name": "Mirka Brani\u0161ov\u00e1"
}
],
"paging": {
"next": "https://graph.facebook.com/201936779932071/likes?limit=25&offset=25&__after_id=100001449904219"
}
}
},
{
"id": "205206429605106",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Turnaje a akce",
"link": "https://www.facebook.com/album.php?fbid=205206429605106&id=190320081093741&aid=42900",
"cover_photo": "205208716271544",
"count": 14,
"type": "normal",
"created_time": "2012-07-10T19:36:53+0000",
"updated_time": "2012-09-15T12:04:05+0000",
"can_upload": false
},
{
"id": "221784994613916",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Tenisova \u0161kolka 2play",
"description": "Tenisov\u00e1 \u0161kolka 2play",
"link": "https://www.facebook.com/album.php?fbid=221784994613916&id=190320081093741&aid=49379",
"cover_photo": "221785024613913",
"count": 9,
"type": "normal",
"created_time": "2012-08-31T11:19:59+0000",
"updated_time": "2012-09-14T15:17:53+0000",
"can_upload": false
},
{
"id": "203405996451816",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Webov\u00e9 fotografie - Logo",
"link": "https://www.facebook.com/album.php?fbid=203405996451816&id=190320081093741&aid=42285",
"cover_photo": "203406586451757",
"count": 11,
"type": "normal",
"created_time": "2012-07-05T10:12:40+0000",
"updated_time": "2012-09-14T15:16:40+0000",
"can_upload": false
},
{
"id": "190332361092513",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Cover Photos",
"link": "https://www.facebook.com/album.php?fbid=190332361092513&id=190320081093741&aid=39232",
"cover_photo": "225939404198475",
"count": 2,
"type": "normal",
"created_time": "2012-06-09T13:52:38+0000",
"updated_time": "2012-09-12T18:15:51+0000",
"can_upload": false
},
{
"id": "190802884378794",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Wall Photos",
"link": "https://www.facebook.com/album.php?fbid=190802884378794&id=190320081093741&aid=39324",
"cover_photo": "190802891045460",
"count": 2,
"type": "wall",
"created_time": "2012-06-10T13:19:48+0000",
"updated_time": "2012-07-17T17:16:19+0000",
"can_upload": false
},
{
"id": "205207126271703",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Ostatn\u00ed",
"link": "https://www.facebook.com/album.php?fbid=205207126271703&id=190320081093741&aid=42902",
"cover_photo": "205209679604781",
"count": 4,
"type": "normal",
"created_time": "2012-07-10T19:40:05+0000",
"updated_time": "2012-07-16T14:47:16+0000",
"can_upload": false,
"likes": {
"data": [
{
"id": "100001449904219",
"name": "Mirka Brani\u0161ov\u00e1"
}
],
"paging": {
"next": "https://graph.facebook.com/205207126271703/likes?limit=25&offset=25&__after_id=100001449904219"
}
}
},
{
"id": "190320914426991",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Profile Pictures",
"link": "https://www.facebook.com/album.php?fbid=190320914426991&id=190320081093741&aid=39224",
"cover_photo": "190327474426335",
"count": 1,
"type": "profile",
"created_time": "2012-06-09T13:29:16+0000",
"updated_time": "2012-06-09T13:43:08+0000",
"can_upload": false
},
{
"id": "190322704426812",
"from": {
"name": "2play.cz - Tenisov\u00e1 \u0161kola",
"category": "Sports league",
"id": "190320081093741"
},
"name": "Logo",
"description": "Loga spole\u010dnosti",
"link": "https://www.facebook.com/album.php?fbid=190322704426812&id=190320081093741&aid=39225",
"type": "normal",
"created_time": "2012-06-09T13:34:09+0000",
"updated_time": "2012-07-05T10:16:58+0000",
"can_upload": false
}
]
}
If you mean the count of items in the data array, it would just be data.length.
First of all, there 9 ids. If you want to count the number of elements in array there's a built-in property length. So that if your object is called x you retrieve the length of data by accessing x.data.length.
On the other hand, if you wanted to count the number of unique ids (IDs should by unique anyway, but if you really really wanted to) you have to manually iterate through the array and count them:
var countIds = function (arr) {
var uniqueIds = {}, num = 0;
if (!arr.data) return false;
arr.data.forEach(function (val, i) {
if (typeof uniqueIds[val.id] === "undefined") {
++num;
uniqueIds[val.id] = true;
}
});
return num;
};
I have JSON similar to this . I wish to extract values like name, his id, and product title from this list . But I am not able to figure it out . I was trying "eval" for the same.
{
"data": [{
"id": "3092773937557",
"from": {
"id": "1810306393",
"name": "Prashant Singh"
},
"start_time": "2012-07-21T09:12:53+0000",
"end_time": "2012-07-21T09:12:53+0000",
"publish_time": "2012-07-21T09:12:53+0000",
"application": {
"id": "132692593533721",
"name": "Compare Hatke"
},
"data": {
"productname": "Apple iPod Nano",
"price": 399,
"product": {
"id": "10151004296768984",
"url": "http:\/\/compare.buyhatke.com\/products\/Apple-iPod-Nano",
"type": "comparehatke:product",
"title": "Apple iPod Nano"
}
},
"likes": {
"count": 0
},
"comments": {
"count": 0
},
"no_feed_story": false
}, {
"id": "3092770217464",
"from": {
"id": "1810306393",
"name": "Prashant Singh"
},
"start_time": "2012-07-21T09:08:53+0000",
"end_time": "2012-07-21T09:08:53+0000",
"publish_time": "2012-07-21T09:08:53+0000",
"application": {
"id": "132692593533721",
"name": "Compare Hatke"
},
"data": {
"productname": "Apple iPod Nano",
"price": 399,
"product": {
"id": "10151004296768984",
"url": "http:\/\/compare.buyhatke.com\/products\/Apple-iPod-Nano",
"type": "comparehatke:product",
"title": "Apple iPod Nano"
}
},
"likes": {
"count": 0
},
"comments": {
"count": 0
},
"no_feed_story": false
}],
"paging": {
"next": "https:\/\/graph.facebook.com\/me\/comparehatke:compare\/?access_token=AAAB4rubm4xkBAHRhdjVgx7JxIIvUxImIm31AMxgnqEAOQsAsgZAJjBYUfvzKc8XgxDBg3AzKN1S6QU2dnmtgj7TPcoCiih1RzrL3pLpuZAgGt8eKpq&limit=2&method=get&pretty=0&offset=2"
}
}
<html>
<script style="text/javscript">
var myObject = { "data": [{
"id": "3092741696751",
"from": {
"id": "1810306393",
"name": "Prashant Singh"
},
"start_time": "2012-07-21T08:40:38+0000",
"end_time": "2012-07-21T08:40:38+0000",
"publish_time": "2012-07-21T08:40:38+0000",
"application": {
"id": "132692593533721",
"name": "Compare Hatke"
},
"data1": {
"productname": "Apple iPod Nano",
"price": 399,
"product": {
"id": "10151004296768984",
"url": "http:\/\/compare.buyhatke.com\/products\/Apple-iPod-Nano",
"type": "comparehatke:product",
"title": "Apple iPod Nano"
}
},
"likes": {
"count": 0
},
"comments": {
"count": 0
},
"no_feed_story": false
} ]};
alert(myObject.data[0].id);
</script>
</html>
data = JSON.parse(yourJSONString);
If this fails, you likely have an error in your JSON. You can use http://jsonlint.com/ to find and resolve the problem. In the paste above, you're missing your closing ]}.