I data API structured like this.
const article = [
{ "title": "title 1", "body": "body 1" }
{ "title": "title 2", "body": "body 2" }
]
but when i tried to get the title data with
let title = article.title
I got undefined
sure when i tried this
let title = article[0].title
I got only the data in array 1. How to get all the title data?
First of all, you have a syntax error, you are missing a comma after your first object in the array. Having said that, based on what you said, you would like to get the title key values and store those values somewhere ?
const article = [
{ "title": "title 1", "body": "body 1" },
{ "title": "title 2", "body": "body 2" }
]
const titles = []
for(let i = 0; i < article.length; i++) {
if(article[i].title) {
titles.push(article[i].title)
}
}
console.log(titles) // output: ["title 1", "title 2"]
I am not sure if this is what you asked given that you were not very clear with what you are trying to do.
sorry my bad, forgot that coma
Gilbert’s solution surely works. It would probably be more common to use functional programming and the map method on that array.
const titles = article.map(function(a) { return a.title })
And with an ES6 arrow function, it is:
const titles = article.map(a => a.title)
Under the hood it’s doing the same thing, but I would argue that this is more readable.
Just for the halibut, I would also point out that you do not need quotes around those object properties, so your definition could be:
const article = [
{ title: "title 1", body: "body 1" },
{ title: "title 2", body: "body 2" }
]
The only time you need the quotes is if the property name is not a valid JS identifier (like if it has a space). Also you need the quotes when you are doing a JSON file. There’s nothing inherently wrong with using the quotes, but it does look a bit odd to people used to JS.
1 Like
This is my code now. Thanks anyway
yeah i know that but i get that data from API that I’m using
but why this keep saying on console that map is not a function
I think it is like this :
const titles = article.map(a => {
title: a.title
body: a.body
})
I would have to see the exact code you are using in its entirety. But if it says map is not a function
that would indicate that article is not an array so it is not defined properly.
I think it is like this :
const titles = article.map(a => {
title: a.title
body: a.body
})
No, that will not work, it will just return an array of undefined. There are a couple syntax mistakes there.
This is the entirety of the code that works:
const article = [
{ title: "title 1", body: "body 1" },
{ title: "title 2", body: "body 2" }
]
const titles = article.map(a => a.title)
console.log(titles)
okay thanks. I got it. realy helpfull
Actualy it is in vuejs. so the data are jumping from one tho another component
I sometimes got an array and not an array. this is where the problem comes from. I dont know why maybe its the way i call and map that data.
I get rid of the error code with this.
const article = . request.dataArticle || []
From your code i should map all data one by one right?
I sometimes got an array and not an array. this is where the problem comes from. I dont know why maybe its the way i call and map that data.
Well, I would want to know why. If that variable holds an array normally, than it should never hold any other data type, except perhaps undefined
or null
. But you should have your code detect that.
const article = . request.dataArticle || []
I don’t understand this line. That doesn’t look like valid JavaScript to me.
From your code i should map all data one by one right?
I don’t understand “one by one”. It is looking, just hidden in a prototype method.