Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中合并动态对象数组_Javascript_Arrays_Object_Array Merge - Fatal编程技术网

在javascript中合并动态对象数组

在javascript中合并动态对象数组,javascript,arrays,object,array-merge,Javascript,Arrays,Object,Array Merge,我试图用key:[value-array]动态构建一个对象,但是使用不同的方法,我总是在值数组中得到一个单数项,其中响应中有多个值 伪代码: var myFunction = function () { var myObject = {}; $.ajax('http://the.url.com', { type: "GET", success: function (res) { $(res).each(function (i

我试图用key:[value-array]动态构建一个对象,但是使用不同的方法,我总是在值数组中得到一个单数项,其中响应中有多个值

伪代码:

var myFunction = function () {
    var myObject = {};
    $.ajax('http://the.url.com', {
        type: "GET",
        success: function (res) {
            $(res).each(function (i, v) {
                    var name = v.name;
                    var id = v.id;
                    // create object with building block and tech id to associate techs to BBs
                    myObject[name] = new Array();
                    myObject[name].push(id);
                });
        },
        error: function (xhr) {}
    }
}
电流输出:

{
    key1: ["value1c"]
    key2: ["value2a"]
    key3: ["value3b"]
}
期望输出:

{
    key1: ["value1a", "value1b","value1c"]
    key2: ["value2a"]
    key3: ["value3a", "value3b"]
}

我认为在创建新对象之前,您需要检查myObject[name]是否已经存在。因为如果每次创建一个新的,它将被覆盖

var myFunction = function () {
  var myObject = {};
  $.ajax('http://the.url.com', {
    type: "GET",
    success: function (res) {
      $(res).each(function (i, v) {
        var name = v.name;
        var id = v.id;
        // create object with building block and tech id to associate techs to BBs
        if (!myObject[name]) {
          myObject[name] = new Array();
        }
        myObject[name].push(id);
      });
    },
    error: function (xhr) {}
  }
}

我认为在创建新对象之前,您需要检查myObject[name]是否已经存在。因为如果每次创建一个新的,它将被覆盖

var myFunction = function () {
  var myObject = {};
  $.ajax('http://the.url.com', {
    type: "GET",
    success: function (res) {
      $(res).each(function (i, v) {
        var name = v.name;
        var id = v.id;
        // create object with building block and tech id to associate techs to BBs
        if (!myObject[name]) {
          myObject[name] = new Array();
        }
        myObject[name].push(id);
      });
    },
    error: function (xhr) {}
  }
}

您将使用每个键的新数组覆盖现有数组,然后使用以下行将最新数组推入:

 myObject[name] = new Array();
尝试添加检查以避免覆盖:

 myObject[name] = myObject[name] || new Array();

您将使用每个键的新数组覆盖现有数组,然后使用以下行将最新数组推入:

 myObject[name] = new Array();
尝试添加检查以避免覆盖:

 myObject[name] = myObject[name] || new Array();
输出是key1:[value1c],因为对象中的键是唯一的,所以它创建键并只存储最新的值。您可以使用并检查myObject是否具有该名称的任何键。如果是,则推送该值,否则创建一个键值对并向其添加id

输出是key1:[value1c],因为对象中的键是唯一的,所以它创建键并只存储最新的值。您可以使用并检查myObject是否具有该名称的任何键。如果是,则推送该值,否则创建一个键值对并向其添加id


每次使用此行创建另一个数组:

myObject[name] = new Array();
因此,每次都会删除旧的推送值

如果阵列不存在,请使用条件初始化阵列:

!Array.isArray(myObject[name]) && (myObject[name] = new Array());
e、 g

$res.eachfunction i,v{ var name=v.name; var id=v.id; //创建具有构建块和技术id的对象,以将技术与BBs关联 !Array.isArraymyObject[name]&&myObject[name]=新数组; myObject[name].pushid;
}; 每次使用此行创建另一个数组:

myObject[name] = new Array();
因此,每次都会删除旧的推送值

如果阵列不存在,请使用条件初始化阵列:

!Array.isArray(myObject[name]) && (myObject[name] = new Array());
e、 g

$res.eachfunction i,v{ var name=v.name; var id=v.id; //创建具有构建块和技术id的对象,以将技术与BBs关联 !Array.isArraymyObject[name]&&myObject[name]=新数组; myObject[name].pushid;
};你如何精确地匹配key1,key2,key3?你如何精确地匹配key1,key2,key3?简明。谢谢,简洁。谢谢