95 votes

Déclarer un tableau d'objets

J'ai une variable qui est un tableau et je veux que chaque élément du tableau agisse comme un objet par défaut. Pour y parvenir, je peux faire quelque chose comme ceci dans mon code.

var sample = new Array();
sample[0] = new Object();
sample[1] = new Object();

Cela fonctionne bien, mais je ne veux pas mentionner de numéro d'index. Je veux que tous les éléments de mon tableau soient des objets. Comment puis-je le déclarer ou l'initialiser ?

var sample = new Array();
sample[] = new Object();

J'ai essayé le code ci-dessus mais il ne fonctionne pas. Comment initialiser un tableau d'objets sans utiliser de numéro d'index ?

10voto

MarzSocks Points 311

Vous pouvez instancier un tableau de "type objet" en une seule ligne comme ceci (il suffit de remplacer nouvel objet() avec votre objet) :

var elements = 1000;
var MyArray = Array.apply(null, Array(elements)).map(function () { return new Object(); });

6voto

spitterfly Points 71

Bien array.length devrait faire l'affaire ou pas ? quelque chose comme, je veux dire que vous n'avez pas besoin de connaître la plage d'index si vous le lisez juste

var arrayContainingObjects = [];
for (var i = 0; i < arrayContainingYourItems.length; i++){
    arrayContainingObjects.push {(property: arrayContainingYourItems[i])};
}

Peut-être que je n'ai pas compris votre question correctement, mais vous devriez être en mesure d'obtenir la longueur de votre tableau de cette façon et de les transformer en objets. Daniel a en quelque sorte donné la même réponse pour être honnête. Vous pourriez simplement enregistrer la longueur de votre tableau dans sa variable et ce serait fait.

SI, et cela ne doit pas arriver à mon avis, vous ne pouvez pas obtenir votre longueur de tableau. Comme vous l'avez dit, sans obtenir le numéro d'index, vous pourriez procéder comme suit :

var arrayContainingObjects = [];
for (;;){
    try{
        arrayContainingObjects.push {(property: arrayContainingYourItems[i])};
    }
}
catch(err){
    break;
}

Il s'agit de la version moins agréable de la version ci-dessus, mais la boucle s'exécute jusqu'à ce que l'on sorte de la plage d'index.

6voto

Abdallah Okasha Points 442
//making array of book object
var books = [];
    var new_book = {id: "book1", name: "twilight", category: "Movies", price: 10};
    books.push(new_book);
    new_book = {id: "book2", name: "The_call", category: "Movies", price: 17};
    books.push(new_book);
    console.log(books[0].id);
    console.log(books[0].name);
    console.log(books[0].category);
    console.log(books[0].price);

// also we have array of albums
var albums = []    
    var new_album = {id: "album1", name: "Ahla w Ahla", category: "Music", price: 15};
    albums.push(new_album);
    new_album = {id: "album2", name: "El-leila", category: "Music", price: 29};
    albums.push(new_album);
//Now, content [0] contains all books & content[1] contains all albums
var content = [];
content.push(books);
content.push(albums);
var my_books = content[0];
var my_albums = content[1];
console.log(my_books[0].name);
console.log(my_books[1].name); 

console.log(my_albums[0].name);
console.log(my_albums[1].name); 

Cet exemple fonctionne avec moi. Instantané de la sortie sur la console du navigateur

5voto

ShuklaSannidhya Points 1943

Essayez ceci.

var arr = [];
arr.push({});

2voto

Cegone Points 407
const sample = [];
    list.forEach(element => {
      const item = {} as { name: string, description: string };
      item.name= element.name;
      item.description= element.description;
      sample.push(item);
    });
    return sample;

Quelqu'un a essayé ça et a suggéré quelque chose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X