Javascript 使用对象数组展平对象中的数据
在我的Vue项目中,我正在对我的Laravel nova后端进行API调用,返回的数据如下 如您所见,数据是一个数组,其中包含一个对象数组。每个数组表示一条记录,而每个对象表示该记录中的一个字段 记录可能有不必要的数据Javascript 使用对象数组展平对象中的数据,javascript,arrays,object,vue.js,ecmascript-6,Javascript,Arrays,Object,Vue.js,Ecmascript 6,在我的Vue项目中,我正在对我的Laravel nova后端进行API调用,返回的数据如下 如您所见,数据是一个数组,其中包含一个对象数组。每个数组表示一条记录,而每个对象表示该记录中的一个字段 记录可能有不必要的数据 const data = [ [ { attribute: 'id', value: 1, extra: "not needed data" }, {
const data = [
[
{
attribute: 'id',
value: 1,
extra: "not needed data"
},
{
attribute: 'title',
value: 'The Title',
extra: "not needed data"
},
],
[
{
attribute: 'id',
value: 2
},
{
attribute: 'title',
value: 'The Other Title'
},
],
]
我想知道如何使用Javascript将其变得更简单
const data = [
{id: 1, title: 'The Title'},
{id: 2, title: 'The Other Title'}
]
我试过的
我尝试过使用map和filter的组合,但结果都不接近 您可以使用map with reduce,仅使用属性和值构建对象,而忽略所有其他属性:
常数数据=[
[
{
属性:“id”,
价值:1,
额外:不需要数据
},
{
属性:'标题',
值:“标题”,
额外:不需要数据
},
],
[
{
属性:“id”,
价值:2
},
{
属性:'标题',
值:“其他标题”
},
],
]
console.logdata.mapa=>a.reducea,o=>a[o.attribute]=o.value,a,{}您的输入语法无效。你想要的输出也不是,事实上输出语法也是如此,也请发布你尝试过的代码。我注意到它是无效的,但我不知道如何。。我错过了什么?一个对象可以包含数组,对吗?我已经尝试使用映射和过滤器的组合…-您也没有发布此部分是@Notflip,但它的值必须有键。只需将外部大括号更改为方括号[],就可以了!我总是想知道人们怎么会想到这样的事情,我觉得我的大脑无法理解简化或复杂的地图。。谢谢@不用担心,伙计,我才真正开始擅长使用它们。如果您花时间完全理解它是如何工作的,那么它将是一个非常好的数据操作工具。如果你需要更多的帮助,尽管问吧