javascript - tablas - Agregar como matriz dentro de la matriz
obtener datos de una tabla html javascript (1)
Solo estoy respondiendo esto de acuerdo con mi suposición de lo que @senty está tratando de hacer:
pushValue es un método que toma números como key
y caracteres como value
y los guarda en this.types
, y cada pushValue
se llama a this.types
, this.types
va a tener una key
propiedad que almacena un objeto con value
como su clave, que almacena una matriz que contiene una matriz vacía. Si esa matriz (la que contiene matrices) ya existe, se agregará otra vacía a esa matriz. Y eventualmente this.types
se verá como myObj
Por lo tanto, pushValue
debería verse así:
const app = new Vue({
el: ''#app'',
data: {
types: {}
},
methods: {
pushValue(key, value) {
if (this.types.hasOwnProperty(key)) {
if (this.types[key].hasOwnProperty(value)) {
const orgValue = this.types[key][value];
orgValue.push([]);
this.$set(this.types[key], value, orgValue);
} else {
this.$set(this.types[key], value, [[]]);
}
} else {
this.$set(this.types, key, {
[value]: [ [] ]
});
}
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.js"></script>
<div id="app">
<div>
<p>pushValue(key, value)</p>
<button v-on:click="pushValue(1, ''a'')">(1, ''a'')</button>
<button v-on:click="pushValue(1, ''b'')">(1, ''b'')</button>
<button v-on:click="pushValue(1, ''c'')">(1, ''c'')</button>
<button v-on:click="pushValue(2, ''a'')">(2, ''a'')</button>
<button v-on:click="pushValue(2, ''b'')">(2, ''b'')</button>
<button v-on:click="pushValue(2, ''c'')">(2, ''c'')</button>
</div>
<div>{{ types }}</div>
</div>
Tengo un objeto que se ve así, y puedo enviar datos usando el siguiente método. También inicializo los types
datos.
myObj = {
1: ["a", "b", "c"],
2: ["c", "d", "e"],
}
data: {
types: {}
},
methods: {
pushValue(key, value) {
var obj = this.types
if (obj.hasOwnProperty(key)) {
var idx = $.inArray(value, obj[key]);
if (idx == -1) {
obj[key].push([value]);
}
} else {
this.$set(obj, key, [value]);
}
},
}
Funciona bien.
Sin embargo, ahora quiero que mi objeto se vea así:
myObj = {
1: {
"a": [
[],[]
],
"b": [
[],[]
],
}
}
¿Cómo puedo modificar mi función de agregar para agregar elementos como este?