Local variable not being recognized inside for loop - Javascript [duplicate] - javascript

This question already has answers here:
Accessing an object property with a dynamically-computed name
(19 answers)
Closed 2 years ago.
I'm trying to reference a variable inside this for loop, but its not working. It recognizes the first variable in the line but anything beyond that it won't recognize
var farmsArray = Object.keys(farmsPath);
var farmsList = new MessageEmbed()
.setTitle("Available Farms")
.setDescription("Where would you like to plant?")
.setColor(0xFFF00);
for(i=0; farmsArray[i] != undefined; i++){
console.log(i);
farmsList.addField(` ${farmsPath.farmsArray[i].name}`, farmsPath.farmsArray[i].size);
it recognizes this^ ^ but not this
};
Can someone help me find out why? I've been trying for a while now and I can't seem to figure out the issue.

Based on var farmsArray = Object.keys(farmsPath); I'll imagine farmsPath is an object whose keys you want to iterate over.
var farmsList = new MessageEmbed()
.setTitle("Available Farms")
.setDescription("Where would you like to plant?")
.setColor(0xfff00);
Object.keys(farmsPath).forEach((key) => {
farmsList.addField(
` ${farmsPath[key].name}`,
farmsPath[key].size,
);
});
could be closer to what you're looking for.

Related

Add a variable to a response path [duplicate]

This question already has answers here:
Accessing an object property with a dynamically-computed name
(19 answers)
Closed 1 year ago.
I'm trying to add a variable into a path like this:
response.response.body.result.company.data.t${variable}.month_col_val[i]
I know it's wrong, yet I'm not being able to find if it's actually posible to do it and how to do it.
My json file contains objects named t0, t1, t2... and so on inside data, so i'm trying to get an specific one by adding the variable value along the T
Variable is define outside the fuction and pass as a parameter.
for (let o = 0; o < 12; o++) {
cy.get($el).find('.month-data-cols').eq(o).invoke('text').then($text => {
let monthGross = $text
let monthGrossReq = response.response.body.result.company.data.t${variable}.month_col_val[o]
monthGross = monthGross.toString().replace(/,/g, '').trim();
expect(monthGross).to.include(monthGrossReq);
})
};
Try using square-bracket notation instead of dot-notation at that property
const data = response.response.body.result.company.data
const monthGrossReq = data[`t${variable}`].month_col_val[o]

How to get info from json using a variable [duplicate]

This question already has answers here:
Accessing an object property with a dynamically-computed name
(19 answers)
Closed 1 year ago.
So I'm trying to get data from a JSON and I declared a variable and want to use the thing from that variable to get info from the JSON I'm trying to do this but I don't know what the problem is
let e = "KA8AL9AE";
let codes = '{"T9R3P5YE": "10", "8HAW69VC": "20"}'
codes = JSON.parse(codes)
console.log(codes.e)
I've tried doing
let e = "KA8AL9AE";
let codes = '{"T9R3P5YE": "10", "8HAW69VC": "20"}'
codes = JSON.parse(codes)
console.log(`${codes. + e}`)
But it didn't work, Is there a way to do this?
You could call the new key like:
codes[e]

Why doesn't JavaScript convert a string to an Object? [duplicate]

This question already has answers here:
How to check if object property exists with a variable holding the property name?
(11 answers)
How to use a variable for a key in a JavaScript object literal?
(16 answers)
Closed 5 years ago.
I'm attempting to run a list of strings through an object. When I do it individually it works, but when I pass it through as a string it doesn't work. How would I fix this?
// this doesn't work
var a = "IntegrationItem1";
var data = faq.a;
// but this works
var data = faq.IntegrationItem1;
What's causing the first example to not work? Is the variable data seeing it as faq."IntegrationItem1" instead of faq.IntegrationItem1?
You can access properties of the object using it's names:
var a = "IntegrationItem1";
var data = faq[a];
what you need is faq["IntegrationItem1"] => faq[a]

Javascript associative array not working [duplicate]

This question already has answers here:
How do I create a dynamic key to be added to a JavaScript object variable [duplicate]
(2 answers)
Closed 8 years ago.
I have this code, but I want the belongsto var to be retrieved as the key using the var value and not the var name:
var belongsto = panel.attr('data-belongsto');
var panelid = panel.attr('id');
tabValue.push({belongsto:panelid}); console.log(tabValue);
this returns [{'belongsto':'12345'}]
As you can see the the script takes belongsto as the key name but I need it to take the content of the variable.
Any help is appreciated, thanks-
Create the object first
var obj = {};
obj[belongsto] = panelid;
tabValue.push(obj);

Updating a result in JSON with a dynamic variable name [duplicate]

This question already has answers here:
JavaScript object: access variable property by name as string [duplicate]
(3 answers)
Closed 8 years ago.
I need to update a value in my JSON.
My JSON result looks like this:
results = {"ROWCOUNT":50,"COLUMNS":["PERSONID","NAME"],"DATA":{"PERSONID":["42","43","44"], "NAME":["JOE","TOM","JANE"]}
resultData = results.DATA
In the below code I am looping over the result set and attempting to update a value at a position. I believe it is failing because I am not using dynamic variables correctly.
var columnName = "NAME";
for(i=0; i < results.ROWCOUNT; i++ ){
resultData.columnName[i] = "foo" // failing here due to "columnName" being dynamic.
}
Figured it out.. You have to use array syntax
resultData[columName][i]

Categories