我有一个看起来像这样的对象,我可以使用下面的方法来推送数据。我还初始化types
数据。
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]);
}
},
}
工作正常。
但是,现在我希望我的对象看起来像这样:
myObj = {
1: {
"a": [
[],[]
],
"b": [
[],[]
],
}
}
如何修改追加功能以追加这样的元素?
答案 0 :(得分:2)
我只是根据@senty试图做的事情来回答这个问题:
pushValue是一种方法,将数字设为key
,字符设为value
,并将其保存到this.types
,每当调用pushValue
时,{{1} }将有一个属性this.types
存储一个以key
为键的对象,它存储一个包含空数组的数组。如果该数组(包含数组的数组)已经存在,则另一个空数将附加到该数组。最终value
看起来像this.types
因此,myObj
应如下所示:
pushValue

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]: [ [] ]
});
}
}
}
});