将嵌套的JSON对象转换为仅一个对象?

Prashant Gupta

我从带有mysql db的node.js中的查询中获取此JSON结果。

[
   [
     {
      val1:1,
      val2:2,
      val3:3
     }
  ],
  [
    {
      val1:1,
      val2:2,
      val3:3
    }
 ],
 [
    {
      val1:1,
      val2:2,
      val3:3
    }
 ]
]

我想转换为以下格式,但是我无法将所有josn对象转换为一个json对象。

   [ 
     {
      val1:1,
      val2:2,
      val3:3
     },
     {
      val1:1,
      val2:2,
      val3:3
     },
     {
      val1:1,
      val2:2,
      val3:3
     }

 ]
num8er

对于嵌套数组中只有一个对象的情况:

const arrayOfArrays = [
  [{val1:1, val2:2, val3:3}, {val1:1, val2:2, val3:3, val4:4}, {val1:1, val2:2, val3:3, val4:4}],
  [{val1:1, val2:2, val3:3}, {val1:1, val2:2, val3:3, val4:4}],
  [{val4:4, val3:3, val2:2, val1:1}],
  [{val2:2, val1:1, val3:3}, {val3:3, val2:2, val1:1, val4:4}]
]

const arrayOfObjects = [].concat.apply([], arrayOfArrays);

console.log('Flattened:', arrayOfObjects);

const normalizeObject = obj => _(obj).toPairs().sortBy(0).fromPairs().value();

const removeDuplicates = function(array) {
  return [
    ...new Set(
      array.map(item => JSON.stringify(normalizeObject(item)))
    )
  ].map(item => JSON.parse(item));
};

const arrayOfUniqueObjects = removeDuplicates(arrayOfObjects);

console.log('Unique:', arrayOfUniqueObjects);
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>

奖励:removeDuplicates我的答案中的检查方法(;



额外:让我们用2种方法扩展Array的原型

const normalizeObject = obj => _(obj).toPairs().sortBy(0).fromPairs().value();

Array.prototype.flattenNested = function() {
  return [].concat.apply([], this);
}

Array.prototype.removeDuplicateObjects = function() {
  return [
    ...new Set(
      this.map(item => JSON.stringify(normalizeObject(item)))
    )
  ].map(item => JSON.parse(item));
}


const arrayOfArrays = [
  [{val1:1, val2:2, val3:3}, {val1:1, val2:2, val3:3, val4:4}, {val1:1, val2:2, val3:3, val4:4}],
  [{val1:1, val2:2, val3:3}, {val1:1, val2:2, val3:3, val4:4}],
  [{val1:1, val2:2, val3:3, val4:4}, {val3:3, val1:1, val2:2}, {val3:3, val2:2, val1:1, val4:4}]
]

const arrayOfObjects = arrayOfArrays.flattenNested();

console.log('Flattened:', arrayOfObjects);


const arrayOfUniqueObjects = arrayOfObjects.removeDuplicateObjects();

console.log('Unique:', arrayOfUniqueObjects);
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将嵌套的 json 对象转换为另一个 json 对象

将嵌套对象数组转换为另一个嵌套索引对象

将JSON页面列表转换为一个对象

将每个具有一个对象的 JSON 对象数组转换为 JSON 对象数组

如何将一个对象转换为带有嵌套对象的数组?

如何将嵌套对象转换为一个对象

使用php将数组转换为另一个json对象内部的json对象

将 Javascript 对象数组转换为一个对象

将json对象转换为另一个对象

如何使用Python将一个JSON对象的值转换为另一个JSON对象的值

将具有一个字段(对象类型)的Json对象转换为对象的json数组

将嵌套对象转换为 JSON Jquery

将csv转换为json(嵌套对象)

如何将嵌套的javascript对象转换为仅一级属性对象?

使用Newtonsoft.Json将两个数组转换为一个JSON对象

将sf对象列表转换为一个sf

如何将IEnumerable转换为一个对象

将每个Li元素转换为一个对象

如何将一个对象转换为一个对象数组?

将一组对象转换为一个对象对象

Python将xml转换为json需要一个类似字节的对象

当只有一个对象时将XML转换为Json Array

将平面 JSON 结构转换为对象并添加另一个属性

Laravel,将JSON数组转换为Array并仅从Array中获取一个对象

从一个txt文件将多个JSON对象转换为R

基于另一个属性将JSON转换为对象

将 CSV 转换为一个充满数字数组的 JSON 对象

给定一个json对象数组,如何将每个对象中的值转换为int或float?

将R数据帧转换为JSON,同时将每一行分成一个新的JSON对象