7
votes

Question de référence JavaScript totalement basique

Les éléments suivants dans une console JavaScript: xxx

rendements:

objet foo = [1] Je veux effectuer une copie en fonction de la valeur B de chaque tableau pour chaque clé d'un. Y a-t-il un moyen plus facile?


3 commentaires

Comment obtenez-vous une "console JavaScript"?


Oscar - Utilisation de Firebug dans Firefox, ou Inspecteur Web Safari.


@Oscar: Vous avez besoin de Firebug pour console.log fonctionner pour fonctionner.


4 Réponses :


0
votes

moyen plus facile: xxx pré>

sortie est identique. p>

EDIT: P>

var a = {'foo': []};
var b = {};

for (var key in a) {
    if (a.hasOwnProperty(key)) {
        b[key] = [];
        for (var i = 0; i < a[key].length; i += 1) {
            b[key][i] = a[key][i];
        }
    }
}

a['foo'].push(1);

console.log(b);


3 commentaires

Anatoliy: Je ne veux pas que B soit simplement une référence à un; Je veux que B soit une copie unique en fonction de la valeur des tableaux stockés dans un de sorte que lorsque j'appuie sur les tableaux de A's n'a aucune incidence sur b.


Fixé. Actuellement, la sortie est un objet avec une matrice vide.


Vous pouvez simplifier tout ce type de copie profonde avec une [clé] .slice (0) .



4
votes

Vous pouvez créer une fonction " clone " qui crée un objet nouvel objet basé sur l'objet original objet Constructeur , puis clone que Original propriétés d'objet est également si elles sont des objets: xxx


5 commentaires

J'ai couru sur ce problème auparavant, et c'est exactement comment je l'ai résolu. +1


Le prototypage rompt ceci. Tout simplement objet.prototype.foo = fonction () {}; créera une récursion infinie.


@Jonathan: a ajouté une déclaration si elle va arrêter la récursion.


Même problème ici CMS: obj.constructor () va mourir sur les fonctions constructrices ( Temp sera non défini ) et potentiellement des globaux de clobber.


@Crescent: Exactement, le même problème !, Ajout de l'opérateur Nouveau pendant que je pense à quelque chose de mieux ...




0
votes

Comme cela ajoutera une prise en charge des tableaux de copie approfondis dans votre code: xxx


0 commentaires