vue中对数组内的内容名称进行查询
在Vue中对数组内的内容名称进行查询,可以使用JavaScript中的Array的filter
方法结合字符串的includes
方法或正则表达式进行模糊匹配。
例如,假设有一个名为list
的数组,其中包含多个对象,每个对象都包含一个name
属性和一个age
属性,我们可以使用filter
方法结合includes
方法查询名称中包含关键字"李"
的对象:
let list = [
{ name: '张三', age: 20 },
{ name: '李四', age: 17 },
{ name: '王五', age: 25 },
{ name: '赵六', age: 16 }
];
let keyword = '李';
let result = list.filter(item => item.name.includes(keyword));
console.log(result); // [{ name: '李四', age: 17 }]
如果要进行更加复杂的模糊匹配,可以使用正则表达式。例如,查询名称中以关键字"张"
开头的对象:
let keyword = /^张/;
let result = list.filter(item => keyword.test(item.name));
console.log(result); // [{ name: '张三', age: 20 }]
这里使用了正则表达式的test
方法来判断对象的name
属性是否满足正则表达式的匹配要求。
vue中对数组内的内容进行查询输入名称后查询
在Vue中对数组内的内容进行查询输入名称后查询,可以使用Vue的计算属性和watch监听来实现。
例如,假设有一个名为list
的数组,其中包含多个对象,每个对象都包含一个name
属性和一个age
属性。我们可以使用一个名为keyword
的data属性来存储用户输入的查询关键字,然后使用一个计算属性filtered
来返回根据关键字查询后的结果:
<template>
<div>
<input v-model="keyword" type="text" placeholder="请输入名称关键字"/>
<ul>
<li v-for="item in filtered" :key="item.name">{{ item.name }} - {{ item.age }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{ name: '张三', age: 20 },
{ name: '李四', age: 17 },
{ name: '王五', age: 25 },
{ name: '赵六', age: 16 }
],
keyword: ''
}
},
computed: {
filtered() {
let keyword = this.keyword.trim();
if (!keyword) {
return this.list;
}
return this.list.filter(item => item.name.includes(keyword));
}
}
}
</script>
这里使用了一个计算属性filtered
来返回根据关键字查询后的结果。当keyword
的值改变时,filtered
会自动更新,从而实现动态查询的效果。
除此之外,也可以使用watch监听keyword
的变化,然后手动更新查询结果。例如:
<template>
<div>
<input v-model="keyword" type="text" placeholder="请输入名称关键字"/>
<ul>
<li v-for="item in filtered" :key="item.name">{{ item.name }} - {{ item.age }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{ name: '张三', age: 20 },
{ name: '李四', age: 17 },
{ name: '王五', age: 25 },
{ name: '赵六', age: 16 }
],
keyword: ''
}
},
computed: {
filtered() {
let keyword = this.keyword.trim();
if (!keyword) {
return this.list;
}
return this.list.filter(item => item.name.includes(keyword));
}
},
watch: {
keyword() {
this.$nextTick(() => {
this.filtered = this.list.filter(item => item.name.includes(this.keyword.trim()));
});
}
}
}
</script>
这里使用了一个watch监听keyword
的变化,然后手动更新查询结果。注意要使用this.$nextTick
来确保DOM更新后再进行查询。
vue props申明数组
在Vue中,可以使用props来声明组件的属性。如果要声明一个数组类型的props,可以使用以下方式:
props: {
myArray: {
type: Array,
required: true // 可选,表示该属性是必需的
}
}
上述代码中,myArray
是属性的名称,type
指定了属性的类型为数组。如果需要确保该属性必须传递给组件,可以将required
设置为true
。
在使用组件时,可以通过传递一个数组给myArray
属性来向组件传递数据。例如:
<template>
<my-component :my-array="[1, 2, 3]"></my-component>
</template>
这样,组件内部就可以通过this.myArray
来访问传递过来的数组。
相关推荐













