JavaScript - 将两个数组对象合并为一个arr对象,然后遍历每个索引/对象

JavaScript--merge two array objects into one arr object then loop through each index/object

本文关键字:对象 arr 然后 遍历 一个 索引 合并 两个 数组 JavaScript      更新时间:2023-09-26
var arrObj1 = [{a:1},{b:2}, {c:3}]
var arrObj2 = [{operator: LESS THAN}, {operator:GREATER THAN}, {operator:"NOT EQUAL"}]
所以我想将 arrObj2[0] 的 obj 合并到 arrObj1[0] 的 obj,将 arrObj2[1]

合并到 arrObj1[1] 的 obj 中,依此类推......

//resultArrObj = [{a:1, operator: LESS THAN}, {b:2, operator:"GREATER THAN}];

在之后(或在合并时(,我需要遍历每个对象并返回一个新的 obj,它将具有属性(字段、输入、运算符(并推送到数组中。

field = key from arrObj1 (a, b, c)
input = value from arrObj1(1,2,3)
operator = "operator" from arrObj 2. 
// var endResult = [{field:a, input:1, operator: LESS THAN}, {field:b, input:2, operator:GREATER THAN}];

谢谢!!

我相信

这能满足您的需求。 它假设您知道您的数据并且不进行任何错误检查,而只是按照您要求的方式组合它们。

var arrObj1 = [{a:1},{b:2}, {c:3}];
var arrObj2 = [{operator: "LESS THAN"}, {operator:"GREATER THAN"}, {operator:"NOT EQUAL"}];
var endResult = [];
var counter = 0;
var objNew = {};
arrObj1.forEach(function(fieldInput){
    for ( field in fieldInput ){
        objNew.field=field;
        objNew.input=fieldInput[field];
        objNew.operator=arrObj2[counter]['operator'];
        counter++;
        endResult.push(objNew);
        objNew={};
    };
})
// var endResult = [{field:a, input:1, operator: LESS THAN}, {field:b, input:2, operator:GREATER THAN}, {field:c, input:3, operator:NOT EQUAL}]

让我们将这个问题分为 2 个步骤:1( 合并对象2( 处理对象

我们可以编写一个广义合并函数:

if (!Object.prototype.extend) {
      Object.prototype.extend = function (object) {
        for (key in object) {
          if (typeof object[key] === 'object' && 
              typeof this[key]   === 'object' && 
              this.hasOwnProperty(key)) {
            this[key].extend(object[key]);      
          } else {      
            this[key] = object[key];      
          }
        }    
        return this;  
      };
};

上面的代码创建了一个所有对象共享的方法。 它的工作原理是这样的:

var obj1 = { 'a': 7 },
    obj2 = { 'b': 2 };
obj1.extend(obj2);
console.log(obj1); // { 'a': 7, 'b': 2 };

我通常不会像使用 .extend 方法那样修改对象,但构建做同样事情但具有不同 API 的东西应该是微不足道的。 (例如,函数扩展(obj1,obj2({做事..并返回扩展对象}

无论如何。 这应该解决有关合并对象的第一部分。

第二部分,处理这个合并的对象,只是使用 for 循环迭代合并的对象,并将新对象推送到数组中。 它看起来像这样:

for (var prop in mergedObject) {
  var tempObject = {};
  if (prop === 'operator') {
    tempObject.operator = mergedObject.operator;
  } else {
    tempObject.field = prop;
    tempObject.input = tempObject[prop];
  }
  endResult.push(tempObject);
}

希望这对您有所帮助。