V
V
vizaville2015-04-19 01:09:14
JavaScript
vizaville, 2015-04-19 01:09:14

Is it possible to create an array of element references?

There is an array of objects, I need to add links to these elements to the second array, is this possible?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
T
Timur Shemsedinov, 2015-04-19
@MarcusAurelius

Looking what type an array and what type elements. If it's an array of strings or numbers, then you can't, but if it's an array of objects, you can:

var objArray = [
  { name: "abc" }, { name: "def" },
  { name: "ghi" }, { name: "jkl" }
];
var objArrayLinks = [ objArray[0], objArray[3] ];

console.dir({
  objArray: objArray,
  objArrayLinks: objArrayLinks
});

objArrayLinks[0].name = "mno";

console.dir({
  objArray: objArray,
  objArrayLinks: objArrayLinks
});

The output will be:
{ objArray:
   [ { name: 'abc' },
     { name: 'def' },
     { name: 'ghi' },
     { name: 'jkl' } ],
  objArrayLinks: [ { name: 'abc' }, { name: 'jkl' } ] }
{ objArray:
   [ { name: 'mno' },
     { name: 'def' },
     { name: 'ghi' },
     { name: 'jkl' } ],
  objArrayLinks: [ { name: 'mno' }, { name: 'jkl' } ] }

Most likely, you want to make an index in memory, for this you don’t need an array at all, but it’s better to use a hash.
For example:
var objHash = {
  object1: { name: "abc" },
  object2: { name: "def" },
  object3: { name: "ghi" },
  object4: { name: "jkl" }
};
var nameIndex = { abc: objHash.object1, jkl: objHash.object4 };

console.dir({
  objHash: objHash,
  nameIndex: nameIndex
});

nameIndex["jkl"].name = "mno";

console.dir({
  objHash: objHash,
  nameIndex: nameIndex
});
The output will be:
{ objHash:
   { object1: { name: 'abc' },
     object2: { name: 'def' },
     object3: { name: 'ghi' },
     object4: { name: 'jkl' } },
  nameIndex: { abc: { name: 'abc' }, jkl: { name: 'jkl' } } }
{ objHash:
   { object1: { name: 'abc' },
     object2: { name: 'def' },
     object3: { name: 'ghi' },
     object4: { name: 'mno' } },
  nameIndex: { abc: { name: 'abc' }, jkl: { name: 'mno' } } }

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question