我从带有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
}
]
对于嵌套数组中只有一个对象的情况:
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] 删除。
我来说两句