0

I'm trying to create a var with a couple of empty property's in it using JavaScript. In other languages (for sure in swift, but I'm sure in others too,) this is called a struct.

What I want it to look like is something like this:

myStruct { value1 : String, value2 : String } 

The closest I found to that is objects (JavaScript Objects), but with that you would have to add values (to my knowledge).

After, I need to add myStruct to an array. I hope this is clear. What is the most efficient way to achieve this?

1

4 Answers 4

1

Method 1:

The simplest of achieving this is to use new in combination with the Function constructor.

var myStruct = function(prop1,prop2){ this.prop1 = prop1; this.prop2 = prop2; } var myStructObj = new myStruct(); var myStructObj2 = new myStruct("prop1","prop2"); var myArr = []; myArr.push(myStructObj); myArr.push(myStructObj2); console.log(myArr);

An enhancement would be to add default params to the constructor and pass arguments while creation.

 var myStruct = function(arg1, arg2){ var prop1 = arg1 || "defaultProp1Value"; var prop2 = arg2 || "defaultProp2Value"; this.prop1 = prop1; this.prop2 = prop2; } var myStructObj1 = new myStruct(); //myStructObj1.prop1 is "defaultProp1Value" //myStructObj1.prop2 is "defaultProp2Value" var myStructObj2 = new myStruct("prop1"); //myStructObj2.prop1 is "prop1" //myStructObj2.prop2 is "defaultProp2Value" var myArr = []; myArr.push(myStructObj1); myArr.push(myStructObj2);

With ES6, you can do this, you can now add default parameters to the constructor.

 //This only works in ES6 // Will cause errors on browsers which have not yet added support // WIll work when used along with a transpiler like Babel var myStruct = function(arg1 = "defaultProp1", arg2 = "defaultProp2"){ this.prop1 = arg1; this.prop2 = arg2; } var myStructObj1 = new myStruct(); //myStructObj1.prop1 is "defaultProp1Value" //myStructObj1.prop2 is "defaultProp2Value" var myStructObj2 = new myStruct("prop1"); //myStructObj2.prop1 is "prop1" //myStructObj2.prop2 is "defaultProp2Value" var myArr = []; myArr.push(myStructObj1); myArr.push(myStructObj2); console.log(myArr); 

You can read more about it here

Method : 2

Using call method. With this approach you can add props on the fly. Whenever you want to add a couple of props to an object with either null values or default values you can use this approach.

var addPropsFunction = function(a,b){ this.prop1 = a; this.prop2 = b; } var myObj1 = {}; var myObj2 = {}; addPropsFunction.call(myObj1); addPropsFunction.call(myObj2,"val1","val2"); console.log(myObj1); console.log(myObj2);

Method : 3

ES6 Classes

class myStruct{ constructor(prop1,prop2){ this.prop1 = prop1; this.prop2 = prop2; } } var myObj = new myStruct(); console.log(myObj); 

Es6 Fiddle - http://www.es6fiddle.net/ifz3rjcc/

In all cases, changing properties is the same. To change prop1's value, all you have to do is

myStructObj.prop1 = "my val"; 
Sign up to request clarification or add additional context in comments.

3 Comments

Thanks! Is there a way to assign all the values when I create myStructObj?
If I don't want to have default values, will the following work? var myStruct = function(prop1, prop2){ this.prop1 = prop1; this.prop2 = prop2; }
Yeah, it will. Made an edit to the first code snippet. You can either not pass arguments in which case they will be undefined, or you could pass them while creating an object.
0

null is a value which means "no value". Assigning null to your properties yields exactly what you need.

1 Comment

Will I be able to assign a value to it after?
0

Well you could do

var myArray = [ {"value1":"Value1Here", "value2":"Value2Here"}, {"value1":"Value1Here", "value2":"Value2Here"}, {"value1":"Value1Here", "value2":"Value2Here"} ]; 

(these values can be null) or you could declare your object as above and do :

myArray.push(yourObject)

Comments

0

I think by now you know how to create a struct in JS.

Now, to initialize properties with empty values:
You have to use either null or undefined based on your requirement. These links can help you in understanding what and how exactly you have to proceed.

  1. null and undefined

  2. Which one to use?

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.