Vue.js 如何在Vue中使用v-for显示分组项?

Vue.js 如何在Vue中使用v-for显示分组项?,vue.js,v-for,Vue.js,V For,我有这样一个数组: /。。。 数据():{ 返回{ 名单:[ {字母:“A”,名字:“Albert”}, {字母:“A”,名字:“Archer”}, {字母:“B”,名称:“刀片”}, {字母:“B”,名字:“小鸟”}, ] } } 我想将其分组显示: A: 艾伯特 弓箭手 B: 刀片 小鸟 如您所见,我想在第一次迭代时附加{{letter}:,或者如果字母与之前的字母不同,如果字母是最后一次,则附加 一个选项是创建一个计算分组,但是这个数据是通过API获得的,接下来的字母是滚动的。那么,

我有这样一个数组:

/。。。
数据():{
返回{
名单:[
{字母:“A”,名字:“Albert”},
{字母:“A”,名字:“Archer”},
{字母:“B”,名称:“刀片”},
{字母:“B”,名字:“小鸟”},
]
}
}
我想将其分组显示:


A:
艾伯特
弓箭手
B:
刀片
小鸟
如您所见,我想在第一次迭代时附加
{{letter}:
,或者如果字母与之前的字母不同,如果字母是最后一次,则附加


一个选项是创建一个计算分组,但是这个数据是通过API获得的,接下来的字母是滚动的。那么,是否有可能用v-for得到这个结果呢?

我不确定我是否完全理解你,但我想你想要这个

<div v-for="item in list">
      <div v-for="person in Object.keys(item)">{{item[person]}}</div>
</div>

{{item[person]}

我不确定我是否完全理解您的意思,但我认为您想要这个

<div v-for="item in list">
      <div v-for="person in Object.keys(item)">{{item[person]}}</div>
</div>

{{item[person]}

使用一个计算属性是一个解决方案

从API获取新数据后,使用
Array.concat
..
运算符合并到当前数据属性中

然后在computed属性中,使用一个
数组。reduce
以获得预期的输出

newvue({
el:“#应用程序”,
数据(){
返回{
项目:[]
}
},
计算:{
计算项:函数(){
返回此.items.reduce((前,当前)=>{
如果(!(pre中的cur.letter))pre[cur.letter]=[]
前[cur.letter]。推送(cur)
返回前
}, {})
}
},
方法:{
getItemsFromAPI:函数(){
设置超时(()=>{
this.items=[…this.items[
{字母:“A”,名字:“Albert”},
{字母:“A”,名字:“Archer”},
{字母:“B”,名称:“刀片”},
{字母:“B”,名字:“小鸟”},
]]
}, 1000)
},
getItemsFromAPI1:函数(){
设置超时(()=>{
this.items=[…this.items[
{字母:“C”,名字:“Albert”},
{字母:“C”,名字:“Archer”},
{字母:“D”,名称:“刀片”},
{字母:“D”,名字:“小鸟”},
]]
}, 1000)
}
}
})

加载数据
加载数据(新字母)
{{key}}
{{index}}:{{item.name}

使用一个计算属性是一个解决方案

从API获取新数据后,使用
Array.concat
..
运算符合并到当前数据属性中

然后在computed属性中,使用一个
数组。reduce
以获得预期的输出

newvue({
el:“#应用程序”,
数据(){
返回{
项目:[]
}
},
计算:{
计算项:函数(){
返回此.items.reduce((前,当前)=>{
如果(!(pre中的cur.letter))pre[cur.letter]=[]
前[cur.letter]。推送(cur)
返回前
}, {})
}
},
方法:{
getItemsFromAPI:函数(){
设置超时(()=>{
this.items=[…this.items[
{字母:“A”,名字:“Albert”},
{字母:“A”,名字:“Archer”},
{字母:“B”,名称:“刀片”},
{字母:“B”,名字:“小鸟”},
]]
}, 1000)
},
getItemsFromAPI1:函数(){
设置超时(()=>{
this.items=[…this.items[
{字母:“C”,名字:“Albert”},
{字母:“C”,名字:“Archer”},
{字母:“D”,名称:“刀片”},
{字母:“D”,名字:“小鸟”},
]]
}, 1000)
}
}
})

加载数据
加载数据(新字母)
{{key}}
{{index}}:{{item.name}

我想显示分组结果,但感谢您的回答我想显示分组结果,但感谢您的回答!我正在使用algolia,我看到我有一个函数来转换数据,我可以用你的例子:谢谢!我正在使用algolia,我看到我有一个函数来转换数据,我可以用你的例子: