使用.splice()将对象添加到数组

时间:2018-01-19 15:17:24

标签: javascript arrays

我在添加对象" myobj"时遇到问题到数组data / data2。如你所见" myobj"一个JS对象,我想添加到数据或data2。通过点击不同按钮触发功能。

myobj的console.log向我展示了

{ array: "arr_id_1", axis: "x", acc: "", vel: "", dist: "", jerk: "" }

我收到错误data2.splice() is not a function

这是我需要的格式。 " MyObj中"应该被添加到我想要使用JSON.stringify的数组中。这个JSON文字通过ajax转到python脚本。阵列"数据"我正确执行的每次点击都填满了,但没有进一步处理的格式。所以我尝试填充数组data2,因为我已经读过,我也可以使用.splice()。不幸的是,console.log(data2)显示" undefined"对于我尝试填充的每个字段,我不知道如何解决它。

我尝试在" myobj"上使用JSON.stringify作为另一种尝试,我试图再次JSON.parse。我尝试将括号和冒号添加到引号中但也没有成功。

我很感激任何建议或帮助。

var counterx = 0;

let data = [];
let data2 = {};

function valuesX() {
  counterx++;

  // does something here

  let arr_id = [];
  arr_id.name = 'arr_id_' + counterx;
  let ind = counterx - 1;
  let myobj;

  function arr() {

    var ind = sel.selectedIndex;
    var axis = sel.options[ind].text;
    arr_id.length = 0;
    arr_id.push(arr_id.name, axis, btna.value, btnv.value, btns.value, btnj.value)
    myobj = {
      array: arr_id[0],
      axis: arr_id[1],
      acc: arr_id[2],
      vel: arr_id[3],
      dist: arr_id[4],
      jerk: arr_id[5]
    };

    console.log(arr_id.name, arr_id)
    console.log(myobj)
    console.log(data.name, data)
    console.log(data2.name, data2)


  }
  data.name = 'data';
  data2.name = 'data2';
  data.splice(ind, 0, arr_id)
  data2.splice(ind, 0, myobj)
}

1 个答案:

答案 0 :(得分:0)

解决方案:

我已使用Answer from JVE999, first suggestionmyobj转换为对象,并使用.splice()将每个新myobj添加到数组data。我使用了splice,因为我需要覆盖已存在的元素,同时在触发函数(.splice() reference)时保持顺序(因此indx)。

var arr_id = [];
arr_id.name = 'arr_id_'+counterx;
var myobj;
var indx = counterx-1;
var data_new;
data.name = 'data';

function arr(){

    var ind = sel.selectedIndex;
    var axis = sel.options[ind].text;

    arr_id.length = 0;
    arr_id.push(arr_id.name, axis, btna.value, btnv.value,btns.value, btnj.value)   
    myobj = {
            array:arr_id[0], 
            axis:arr_id[1], 
            acc:arr_id[2], 
            vel:arr_id[3], 
            dist:arr_id[4], 
            jerk:arr_id[5]
            };

    data_new = convArrToObj(myobj);
    data.splice(indx, 1, data_new)
    data_str = JSON.stringify(data)

    console.log(data.name, data)
    console.log(data_str)

    }