在数组中追加数组

时间:2017-08-03 17:10:33

标签: javascript arrays multidimensional-array vue.js vuejs2

我有一个看起来像这样的对象,我可以使用下面的方法来推送数据。我还初始化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": [
           [],[]
        ],
       }
 }

如何修改追加功能以追加这样的元素?

1 个答案:

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