javascript 如何连接json对象并在

8fsztsew  于 2022-12-02  发布在  Java
关注(0)|答案(2)|浏览(123)

我有一些json对象,我只想将所有的对象连接到一个
我有这个输入

a:[{h:1, i:2}]
b:[{j:1, k:2}]
c:[{l:1, m:2}]

我需要此输出

[{type: a, h:1, i:2}, {type: a, o:1, p:2}, {type: b, j:1, k:2}, {type: c, l:1, m:2}]

我试着:

const a = {"a":[{"h":1, "i":2}]}
const b = {"b":[{"j":1, "k":2}]}
const c = {"c":[{"l":1, "m":2}]}

const result = {};
let key;

for (key in a) {
  if(a.hasOwnProperty(key)){
    result[key] = a[key];
  }
}

for (key in b) {
  if(b.hasOwnProperty(key)){
    result[key] = b[key];
  }
}

console.log('b', result)
s5a0g9ez

s5a0g9ez1#

若要将abc数组中的对象合并为一个数组,可以使用Array原型的mapconcat方法。map方法允许您转换数组中的元素,concat方法允许您将两个数组合并为一个数组。
下面是一个示例,说明如何使用这些方法将abc数组中的对象组合到一个数组中:

const a = [{h: 1, i: 2}];
const b = [{j: 1, k: 2}];
const c = [{l: 1, m: 2}];

const result = [].concat(
  a.map(obj => Object.assign({type: "a"}, obj)),
  b.map(obj => Object.assign({type: "b"}, obj)),
  c.map(obj => Object.assign({type: "c"}, obj))
);

运行这段代码后,result数组将包含来自abc数组的组合对象,并为每个对象添加了type属性。输出如下所示:

[
  {type: "a", h: 1, i: 2},
  {type: "b", j: 1, k: 2},
  {type: "c", l: 1, m: 2}
]
fzsnzjdm

fzsnzjdm2#

你可以用这段代码做任何数量的输入。希望它能有所帮助:

const data = [
  {"a":[{"h":1, "i":2}]},
  {"b":[{"j":1, "k":2}]},
  {"c":[{"l":1, "m":2}]}
];

const result = data.map((dataItem) => {
  const key = Object.keys(dataItem)[0];
  const valuesObject = dataItem[key][0];
  return {
    type: key,
    ...valuesObject
  };
});

console.log(result);

相关问题