首页 > 解决方案 > 如何使用循环将对象合并到 Javasript 中的数组中

问题描述

我在javascript中有一个这样的数组,

data = [
    {
        item: "Banana",
        path: "fruit"
    },
    {
        message: "Volvo",
        path: "car"
    },
    {
        message: "Cat",
        path: "animal"
    }
]

我需要像这样创建新对象,

data = {
    fruit: "Banana",
    car: "Volvo",
    animal: "Cat"
}

我试过这个循环,

var newData = [];

data.map(value => {
    newData[value.path] = value.message
});

但是这个循环保持这样的返回,

data = [
    {
        fruit: "Banana"
    },
    {
        car: "Volvo"
    },
    {
        animal: "Cat"
    }
]

如何解决这种情况?谢谢

标签: javascriptarrays

解决方案


你可以使用.reduce

const data = [
  {
    item: 'Banana',
    path: 'fruit'
  },
  {
    message: 'Volvo',
    path: 'car'
  },
  {
    message: 'Cat',
    path: 'animal'
  }
]

const res = data.reduce((acc, el) => ({ ...acc, [el.path]: el.message || el.item }), {})

console.log(res)

或继续您的解决方案,但将数组更改为[]对象{}

const data = [
  {
    item: 'Banana',
    path: 'fruit'
  },
  {
    message: 'Volvo',
    path: 'car'
  },
  {
    message: 'Cat',
    path: 'animal'
  }
]

var newData = {}

data.map(value => {
  newData[value.path] = value.message || value.item
})

console.log(newData)


推荐阅读