JavaScript实现将数组对象中相同属性值的对象合并成一个新对象的方法

18 min read

下面是一个JavaScript函数,用于将具有相同属性值的对象合并成新对象:

function mergeObjectsWithSamePropertyValue(arr, property) {
  let outputArr = [];
  let values = [];

  // 获取数组中所有的不同的属性值
  for (let i = 0; i < arr.length; i++) {
    let currentValue = arr[i][property];

    if (!values.includes(currentValue)) {
      values.push(currentValue);
    }
  }

  // 遍历不同属性值的数组并合并相应对象
  for (let j = 0; j < values.length; j++) {
    let currentPropertyValue = values[j];

    let mergedObj = arr.filter(item => item[property] === currentPropertyValue)
    .reduce((result, item) => Object.assign(result, item), {});

    outputArr.push(mergedObj);
  }

  return outputArr;
}

该函数将一个包含对象的数组作为第一个参数,并将要合并的属性名称作为第二个参数。函数将返回一个新的包含合并后的对象的数组。该函数将循环并获取数组中的所有不同属性值,然后将每个该属性值相同的对象合并到一个新对象中,并将该对象添加到新的数组中。