Tengo un objeto de matriz asociativa en Javascript del que solo necesito una parte. Con una matriz regular, solo usaría slice para obtener la parte que necesito, pero obviamente esto no funcionará en una matriz asociativa. ¿Hay alguna función Javascript integrada que pueda usar para devolver solo una parte de este objeto? De lo contrario, ¿cuáles serían las mejores prácticas para hacerlo? ¡Gracias!Obtenga una porción de una matriz asociativa de Javascript?
Respuesta
No va a ser una buena manera de 'rebanada' del objeto, que no, pero que podría hacer esto si realmente tenía que:
var myFields = ['field1', 'field2', 'field3'];
var mySlice = {};
for (var i in myFields) {
var field = myFields[i];
mySlice[field] = myOriginal[field];
}
Missing hasOwnProperty ... explota en 3 ... 2 ... 1 ...;) –
Hmm, así que básicamente tengo que recorrer las propiedades del objeto? Dado que mi objeto tiene todas las propiedades que necesito en el objeto rebanado, ¿no podría simplemente aumentar un bucle mientras obtengo los números que necesito? es decir, si (i> 0 && i <11)? –
@IvoWetzel ¡Si hay código en la página que agrega propiedades enumerables en el prototipo de Object, entonces es su propia maldita falla! – Raynos
Hay una pequeña función que utilizo:
/**
* Slices the object. Note that returns a new spliced object,
* e.g. do not modifies original object. Also note that that sliced elements
* are sorted alphabetically by object property name.
*/
function slice(obj, start, end) {
var sliced = {};
var i = 0;
for (var k in obj) {
if (i >= start && i < end)
sliced[k] = obj[k];
i++;
}
return sliced;
}
He creado this gist que hace exactamente esto. Devuelve un objeto nuevo con solo los argumentos provistos y deja intacto el objeto anterior.
if(!Object.prototype.slice){
Object.prototype.slice = function(){
var returnObj = {};
for(var i = 0, j = arguments.length; i < j; i++){
if(this.hasOwnProperty(arguments[i])){
returnObj[arguments[i]] = this[arguments[i]];
}
}
return returnObj;
}
}
Uso:
var obj = { foo: 1, bar: 2 };
obj.slice('foo'); // => { foo: 1 }
obj.slice('bar'); // => { bar: 2 }
obj; // => { foo: 1, bar: 2 }
- 1. Eliminar una clave de una matriz asociativa
- 2. ¿Utiliza una matriz asociativa como nombre de variable? - javascript
- 3. ¿Cómo obtener una matriz de valores de una matriz asociativa?
- 4. función para convertir una matriz a una matriz asociativa
- 5. ¿Copiar matriz asociativa en javascript?
- 6. JavaScript matriz asociativa a JSON
- 7. ordenar una matriz asociativa multidimensional?
- 8. ¿Cómo obtengo una porción de una referencia de matriz?
- 9. Cómo obtener una dimensión (porción) de una matriz multidimensional
- 10. Sintaxis eficiente para rellenar una matriz asociativa javascript
- 11. ¿Cómo recorrer una matriz asociativa JSON en javascript?
- 12. Hacer un "Diff" en una matriz asociativa en javascript/jQuery?
- 13. Iterar sobre una matriz asociativa Javascript en orden clasificado
- 14. variable como índice en una matriz asociativa - Javascript
- 15. Valor más alto de una matriz asociativa
- 16. Ordenación de una matriz asociativa en PHP
- 17. ¿Cómo ordenar una matriz (asociativa) por valor?
- 18. Obtenga bases de datos MongoDB en una matriz de JavaScript?
- 19. ¿Cómo convertir una matriz simple a una matriz asociativa?
- 20. ¿Suma de una fila de una matriz asociativa utilizando PHP?
- 21. Obtenga la clave final de una matriz en PHP
- 22. ¿Mantiene php orden en una matriz asociativa?
- 23. ¿Cómo convertir una matriz asociativa en python?
- 24. Implosionar una matriz asociativa en PHP
- 25. Obtenga parte de una matriz de caracteres
- 26. Convertir matriz asociativa de matriz numérica
- 27. Cambiar una matriz asociativa en una matriz indexada/obtener una Zend_Table_Row_Abstract como no asociativo
- 28. Obtenga el tamaño de una matriz 2D
- 29. Matriz-Merge en una matriz asociativa en PHP
- 30. Creación de una matriz asociativa de MySQL Query Results - PHP
Es jQuery es una opción? – James
En primer lugar, cuéntenos sobre el tipo de datos que almacena en él y qué debe hacer con él. ¿Es multidimensional? ¿Necesita ser ordenado? Varios detalles sobre las necesidades específicas serían útiles. –
Sí, estoy usando jQuery en este sitio. –