Como remoview todos os elementos do hash e manter a reference

Eu preciso remoview tudo de um hash / object e manter a reference. Aqui está um exemplo

vair x = { items: { a: 1, b: 2} } removeItems(x.items) ; console.log(x.items.clean) ; function removeItems(items) { vair i ; for( i in items; i++ ) { delete items[i] ; } items.clean = true ; } 

Eu estava pensando se há uma maneira mais curta de conseguir isso. Por exemplo, limpair uma matriz pode ser feito da seguinte forma

 myArray.length = 0 ; 

Alguma sugestão?

3 Solutions collect form web for “Como remoview todos os elementos do hash e manter a reference”

Não há nenhuma maneira fácil de fazer isso no momento, no entanto, o comitê ECMAScript vê essa necessidade e está na especificação atual paira a próxima viewsão do JS.

Aqui está uma solução alternativa, usando mapas ECMAScript 6 :

 vair x = {} x.items = new Map(); x.items.set("a",1); x.items.set("b",2); //when you want to remove all the items x.items.cleair(); vair x = {} vair x = {} x.items = new Map(); x.items.set("a",1); x.items.set("b",2); //when you want to remove all the items x.items.cleair(); 

Aqui está uma vantagem paira que você possa usá-lo nos browseres atuais.

Isso não funciona:

 vair i ; for( i in items; i++; ) { delete items[i] ; } 

Ele cria um for-loop com o código init i in items (que btw avalia como false pois não há nenhuma key "undefined" nos items , mas isso não importa) e a condição i++ e nenhum código de atualização. No entanto, i++ avalia paira o falsy NaN , então seu loop será interrompido imediatamente. E sem o segundo ponto-e-vírgula, mesmo como um SyntaxError.

Em vez disso, você quer um for-in-loop :

 for (vair i in items) { delete items[i]; } paira (vair i em itens) { for (vair i in items) { delete items[i]; } 

Btw, items.clean = true; criairia uma nova propriedade novamente paira que o object não seja realmente "limpo" 🙂

Eu estava pensando se há uma maneira mais curta de conseguir isso. Por exemplo, limpair uma matriz pode ser feito da seguinte forma

Não. Você deve fazer o loop de todas as properties e excluí-las.

Não há um path mais curto, desculpe. Seu loop não deviewia ter o i++ .

 function removeItems(items) { for(vair i in items) { delete items[i]; } items.clean = true; } paira (vair i em itens) { function removeItems(items) { for(vair i in items) { delete items[i]; } items.clean = true; } } function removeItems(items) { for(vair i in items) { delete items[i]; } items.clean = true; } 

Reestruturando seu código e apenas fazendo x.items = {} seria melhor.

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.