How to split and iterate over a string in Javascript? [closed] - javascript

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 8 months ago.
Improve this question
On a React Page inside render I have the code below, which produces the error:
topic.language.map is not a function
{console.log(JSON.stringify(topic.language))} //this returns "English,French,Other"
{topic.language.map(
(ln, i) => {
return (
<div
key={i}
className="language"
>
{ln}
</div>
);
}
)}
What am I doing wrong and how can I map the different languages? Do I need .split instead of .map? What would that look like?

If your language value is a string, you will need to split the string into an array before calling map.
const topic = { language: 'English,French,Other' };
topic.language.split(/,/g).map((ln, i) => {
console.log(ln);
});

//assuming your string is like "part1,part2,part3......partn"
//you can just use
//this will return an array of string spitted by your delimiter
//here is ',' comma
//put that is split method and you will be good to go
let stringSplitArray = "part1,part2,part3,part4".split(",")
//now you can do
stringSplitArray.map(element=>(
<div>{element}</div>
))

Related

Comparing keyword value field in array - Javascript [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
I have keyword (for example -2330) that needs to be compared with the 'values' in this string below.
"[{\"type\":\"A_PRODUCT\",\"value\":[[{\"key\":\"SUBCLASS\",\"value\":\"1574\"}],[{\"key\":\"SUBCLASS\",\"value\":\"2331\"}]]}]";
Expected output needs to be true or false depending if the string has the keyword or not.
How do I check it?
I will do something like this to loop
var a = "[{\"type\":\"A_PRODUCT\",\"value\":[[{\"key\":\"SUBCLASS\",\"value\":\"1574\"}],[{\"key\":\"SUBCLASS\",\"value\":\"2331\"}]]}]";
var new_a = JSON.parse(a);
var value_compare = '1574';
new_a[0]['value'].forEach(element => {
if (element[0].value == value_compare) {
//DO SOMETHING
alert('found: '+ JSON.stringify(element));
}
});
You first need to parse the JSON into an suitable JS structure. Because of the nested nature of the data you need to 1) map over the first object in your array, 2) return the value of the value property of the first object of each and finally 3) check to see if the keyword is included in the the returned array, and return true or false.
const json = '[{\"type\":\"A_PRODUCT\",\"value\":[[{\"key\":\"SUBCLASS\",\"value\":\"1574\"}],[{\"key\":\"SUBCLASS\",\"value\":\"2331\"}]]}]';
const data = JSON.parse(json);
function doesItExist(data, keyword) {
const values = data[0].value.map(arr => arr[0].value);
return values.includes(keyword);
}
console.log(doesItExist(data, '2331'));
console.log(doesItExist(data, 'Bob'));
console.log(doesItExist(data, '1574'));

How to check if a number is NOT a property in a javascript object [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 1 year ago.
Improve this question
I wanna check if a number is not a property in an object and if is not add it to the object as a property.
var obj{}
var arr=[1,2,3,4]
I´ve tried if(! number in object ) and if(! object.hasOwnProperty(number)) but didn´t work, and in both cases, I also tried to make the number become a string doing number.toString(), and nothing happened.
ar.forEach(number=>{
if(!(number in obj)){ //or number.toString()
})
ar.forEach(number=>{
if(! obj.hasOwnProperty(number)){ //or number.toString()
})
Your code actually works once you fix the typos:
var obj = {3: 'hey'}
var arr = [1, 2, 3, 4]
arr.forEach(number => {
if (!(number in obj)) {
console.log(number + ' is not in obj')
}
}
)
Object.values(your_object) gives you an array with all the values in your object.
Then iterate trough that array and check if it contains your number.

Won't print out names help please [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 3 years ago.
Improve this question
let people = ['John','Sally','Jake','Chris'];
const logPerson = (person, index) => {
console.log('${index} - Hello ${person}');
};
people.forEach(logPerson);
it keeps printing out like this
"${index} - Hello ${person}"
how do I get it to display the names & index value code looks right as far as I can tell and from what I searched on google.
let people = ['John','Sally','Jake','Chris'];
const logPerson = (person, index) => {
console.log(`${index} - Hello ${person}`);
};
people.forEach(logPerson);
You need to use the BACKTICK, not the regular quote.
console.log(`${index} - Hello ${person}`);
If you are on the US keyboard, that symbol is just above the tab key, right beside the 1 key.
const logPerson = (person, index) => {
console.log(`${index} - Hello ${person}`);
};
people.forEach(logPerson);
In order to reference variables like this you need to use a backquote. However, if you are going to use regular quotes, you can use commas within your string if that is easier:
const logPerson = (person, index) => {
console.log(index, "- Hello", person);
};
The code above will give you the same output. You can also use the plus operator. Whichever form you choose is up to you, but use the backquote when you are trying to reference variables the way you need. Use normal quotes when attempting to reference variables normally and concatenating them within a string using the + or , operators.

.shift() apparently no longer exists [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 4 years ago.
Improve this question
https://jsfiddle.net/a/2L4t9saq/217/ is my fiddle
most of the code you can ignore, here is the function:
var modGrid = function(code){
var arr = code
console.log(arr)
for(var n=1;n<gridx+1;n++){
for(var i = 1; i<gridy+1; i++){
var garbledMess = "[x="+i+"][y="+n+"]"
var idea = arr[0]
arr.shift()
$(garbledMess).css("background-color",idea)
}
}
}
the syntax error is as follows:
Uncaught TypeError: arr.shift is not a function
at modGrid ((index):44)
at window.onload ((index):81)
since the modGrid function takes in an array (in the case of my code an array of 4 elements) the .shift() function should be removing the first option in the array, it worked before i added some more code, but now it is apparently not a function
many thanks
since the modGrid function takes in an array
It is designed to take an array, but that isn't what you are passing it.
You are passing it a string, another string, a number and another number.
modGrid('rgba(255,0,0,1)','rgba(0,255,0,1)',2,1);

How return this data in json for each? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
i have json values like this, i try to use for each to get the result one bye one, but it was not returning to me
"[{"id":6,"userid":13,"title":"business3","bussinessTypeid":1,"photurl":"","cntry":[{"id":"9","name":"Bahrain"}]},
{"id":7,"userid":13,"title":"business6 arabic","bussinessTypeid":1,"photurl":"","cntry":[{"id":"1","name":"Afghanistan"}]},
{"id":10,"userid":13,"title":"E-commerce","bussinessTypeid":1,"photurl":"","cntry":[{"id":"1","name":"Afghanistan"}]},
{"id":11,"userid":8,"title":"Auto phone parts","bussinessTypeid":1,"photurl":"","cntry":[{"id":"1","name":"Afghanistan"}]},
{"id":19,"userid":8,"title":"التجارة الإلكترونية","bussinessTypeid":1,"photurl":".jpg","cntry":[{"id":"9","name":"Bahrain"}]},
{"id":20,"userid":8,"title":"E-commerce -online shopping","bussinessTypeid":8,"photurl":".jpg","cntry":[{"id":"9","name":"Bahrain"}]},
{"id":21,"userid":13,"title":"My new Business","bussinessTypeid":6,"photurl":".jpg","cntry":[{"id":"9","name":"Bahrain"}]}]"
can anyone guide me to achive this
I think it's being treated as a string try to remove the ( " ) on the start and end of it something like:
var json = [{"id":6,"userid":13,"title":"business3","bussinessTypeid":1,"photurl":"","cntry":[{"id":"9","name":"Bahrain"}]},{"id":7,"userid":13,"title":"business6 arabic","bussinessTypeid":1,"photurl":"","cntry":[{"id":"1","name":"Afghanistan"}]},{"id":10,"userid":13,"title":"E-commerce","bussinessTypeid":1,"photurl":"","cntry":[{"id":"1","name":"Afghanistan"}]},{"id":11,"userid":8,"title":"Auto phone parts","bussinessTypeid":1,"photurl":"","cntry":[{"id":"1","name":"Afghanistan"}]},{"id":19,"userid":8,"title":"التجارة الإلكترونية","bussinessTypeid":1,"photurl":".jpg","cntry":[{"id":"9","name":"Bahrain"}]},{"id":20,"userid":8,"title":"E-commerce -online shopping","bussinessTypeid":8,"photurl":".jpg","cntry":[{"id":"9","name":"Bahrain"}]},{"id":21,"userid":13,"title":"My new Business","bussinessTypeid":6,"photurl":".jpg","cntry":[{"id":"9","name":"Bahrain"}]}];
Then do the iteration:
for(id in json){
alert(json[id]['id']);
}
and don't include any next line spaces are ok as long as they are separated by a comma (,)
Use parseJson()
Description: Takes a well-formed JSON string and returns the resulting
JavaScript object.
$.each(data, function(key, value){
console.log(value.id, value.title);
$.each(value.cntry, function(key2, value2){
console.log(value2.id, value2.name);
})
});
Try this with jquery
var data = jQuery.parseJSON(yourJsonInString); //or this parser below
var data = JSON.parse(yourJsonInString);

Categories