Javascript 根据vuejs中的价格(产品的mrp)对产品进行排序
** 样本数据Javascript 根据vuejs中的价格(产品的mrp)对产品进行排序,javascript,vue.js,Javascript,Vue.js,** 样本数据 storeProducts=[ {Pname:'soap', mrp:50 }, {Pname:'facewash', mrp:30 }, {Pname:'洗发水', mrp:100 }] ** 我正在尝试根据storeProducts的价格对产品进行分类,我尝试了一些方法,有人能告诉我怎么做吗 从低到高(价格) 从高到低(价格) 导出默认值{ 名称:“ProductBySubCategory”, 组成部分:{ 产品瓷砖, }, 数据(){ 返回{ 产品:[], 存储产品:[]
storeProducts=[
{Pname:'soap', mrp:50 },
{Pname:'facewash', mrp:30 },
{Pname:'洗发水', mrp:100 }
] ** 我正在尝试根据storeProducts的价格对产品进行分类,我尝试了一些方法,有人能告诉我怎么做吗
从低到高(价格)
从高到低(价格)
导出默认值{
名称:“ProductBySubCategory”,
组成部分:{
产品瓷砖,
},
数据(){
返回{
产品:[],
存储产品:[],
糟糕的是:1,
};
},
方法:{
getRenamedProducts(产品){
返回产品。映射((产品)=>{
返回{
id:prod.id,
标题:prod.title,
mrp:prod.mrp,
realUnit:prod.unit,
};
});
},
},
计算:{
filteredProduct:函数(){
返回此.storeProducts.sort((a,b)=>{
if(this.sortBy==“1”){
返回b.mrp-a.mrp;
}else if(this.sortyBy=='2'){
返回a.mrp-b.mrp;
}
});
},
},
};
```
试试这个:
filteredProduct:function(){
const sortBy=this.sortBy;
返回此.storeProducts.sort((a,b)=>{
如果(排序方式=='1'){
返回b.mrp-a.mrp;
}else if(排序方式=='2'){
返回a.mrp-b.mrp;
}
});
}
能否检查排序胖箭头函数中this
的值,我认为this
的值在该范围内可能不正确。另外,您可以添加您得到的错误吗?这将返回所有对象数组。错误消息:184:14错误“filteredProduct”计算属性vue中出现意外的副作用/no-side-effects-in-computed-properties。感谢您的回复,但收到了相同的错误消息。您好@swati,错误是怎么说的?将此.storeProducts存储到变量后,错误已删除,但产品仍未排序。为什么?决定:)谢谢。
<div class="mt-4">
<div class="column" v-if="storeProducts.length !== 0">
<div class="control is-pulled-right">
<div class="select">
<select v-model="sortBy" v-on:change="filteredProduct">
<option value="1">Low to High(Price)</option>
<option value="2">High to Low(Price)</option>
</select>
</div>
</div>
</div>
</section>
</div>
</template>
<script>
export default {
name: 'ProductBySubCategory',
components: {
ProductTile,
},
data() {
return {
products: [],
storeProducts: [],
sortBy: 1,
};
},
methods: {
getRenamedProducts(products) {
return products.map((prod) => {
return {
id: prod.id,
title: prod.title,
mrp: prod.mrp,
realUnit: prod.unit,
};
});
},
},
computed: {
filteredProduct: function () {
return this.storeProducts.sort((a, b) => {
if (this.sortBy == '1') {
return b.mrp - a.mrp;
} else if (this.sortyBy == '2') {
return a.mrp - b.mrp;
}
});
},
},
};
</script>```