列表中项目的两个属性之和(javascript)
我有一个清单,上面有这样的项目列表中项目的两个属性之和(javascript),javascript,vue.js,Javascript,Vue.js,我有一个清单,上面有这样的项目 { quantity: '', price: '', amount: '' } 这些项目是动态添加的,我的问题是,是否可以将数量和价格相加以得出金额值,从而使金额值也随着价格或数量的变化而变化?因为您使用的是vuejs,所以您可以通过使用[computed][1]属性轻松实现您的目标 例如: export default { data () { return { quantity: '', price: '' }
{ quantity: '', price: '', amount: '' }
这些项目是动态添加的,我的问题是,是否可以将数量和价格相加以得出金额值,从而使金额值也随着价格或数量的变化而变化?因为您使用的是
vuejs
,所以您可以通过使用[computed][1]
属性轻松实现您的目标
例如:
export default {
data () {
return {
quantity: '',
price: ''
}
},
computed: {
amount () {
return this.quantity + this.price
}
}
}
请注意,
computed
属性不能像this.computedProp=someValue
那样设置,而且它们不是函数
,它们可以像数据
属性一样使用。由于您使用的是vuejs
属性,因此可以通过使用[computed][1]
属性轻松实现您的目标
例如:
export default {
data () {
return {
quantity: '',
price: ''
}
},
computed: {
amount () {
return this.quantity + this.price
}
}
}
请注意,
computed
属性不能像this.computedProp=someValue
那样设置,它们不是函数
,它们可以像数据
属性一样使用。您可以创建与列表中的项目相关的新组件
var vm=new Vue({
el:“#示例”,
数据:{
数量:“”,
价格:''
},
计算:{
金额:函数(){
返回此数量*此价格
}
}
})
您可以创建与列表中的项目相关的新组件
var vm=new Vue({
el:“#示例”,
数据:{
数量:“”,
价格:''
},
计算:{
金额:函数(){
返回此数量*此价格
}
}
})
有两个普通javascript选项。我没有提到任何特定于Vue的东西
对我来说,最简单的方法是向对象添加一个getAmount
-方法,该方法将根据其他两个属性返回金额。例如
var item = {
quantity: 3,
price: 5.00,
getAmount: function () {
return this.quantity * this.price
}
}
尽管我希望使用null
作为默认值。第二种选择是使用对象描述符。您可以使用
object.create()
创建对象,或使用object.defineProperty()
向现有对象添加属性。这两种方法都允许您传递一个对象描述符,您可以在其中为属性定义一个getter
,它将根据其他字段计算所需的值。例如
var item = Object.create({
quantity: null,
price: null,
}, {
amount: {
get: function () { return this.quantity*this.price }
}
})
现在,
amount
属性将返回quantity*price
,只需执行item.amount
有几个普通javascript选项。我没有提到任何特定于Vue的东西
对我来说,最简单的方法是向对象添加一个getAmount
-方法,该方法将根据其他两个属性返回金额。例如
var item = {
quantity: 3,
price: 5.00,
getAmount: function () {
return this.quantity * this.price
}
}
尽管我希望使用null
作为默认值。第二种选择是使用对象描述符。您可以使用
object.create()
创建对象,或使用object.defineProperty()
向现有对象添加属性。这两种方法都允许您传递一个对象描述符,您可以在其中为属性定义一个getter
,它将根据其他字段计算所需的值。例如
var item = Object.create({
quantity: null,
price: null,
}, {
amount: {
get: function () { return this.quantity*this.price }
}
})
现在,
amount
属性将返回quantity*price
,只需执行item.amount
也许您需要一个getter函数来计算数量:
a = ({
quantity: '',
price: '',
get amount() {
return +this.quantity + +this.price;
}
})
然后,您可以访问a.amount以获取数量和价格之和。也许您需要一个获取数量的getter函数:
a = ({
quantity: '',
price: '',
get amount() {
return +this.quantity + +this.price;
}
})
然后,您可以访问a.amount以获取数量和价格之和。尽管我认为运算应该是“乘法”而不是“加法”。 请尝试以下操作:
var数组=[{数量:10,价格:200,金额:'},{数量:5,价格:100,金额:'}]
var newArray=array.map(函数(元素,索引){
数组[index]。金额=数组[index]。数量+数组[index]。价格
返回;
});
console.log(数组)代码>尽管我认为操作应该是“乘法”而不是“加法”。
请尝试以下操作:
var数组=[{数量:10,价格:200,金额:'},{数量:5,价格:100,金额:'}]
var newArray=array.map(函数(元素,索引){
数组[index]。金额=数组[index]。数量+数组[index]。价格
返回;
});
console.log(数组)
要根据数量计算价格,只需使用{{item.price*item.quantity}
。我假设您不想用不必要的total字段使数据库混乱:-)
示例(包括总价)
newvue({
el:“#应用程序”,
数据:{
名单:[
{名称:'foo',数量:2,价格:20},
{名称:'bar',数量:3,价格:150},
{名称:'baz',数量:1,价格:80}
]
},
计算:{
total(){返回此.list.reduce((total,item)=>item.price*item.quantity+total,0);},
}
})
ul{list style:none;}
li:最后一个子项{边框顶部:1px实心;边框底部:3px双精度;}
-
{{item.name}:{{item.price*item.quantity}
- 总计:{{Total}
要根据数量计算价格,只需使用{{{item.price*item.quantity}
。我假设您不想用不必要的total字段使数据库混乱:-)
示例(包括总价)
newvue({
el:“#应用程序”,
数据:{
名单:[
{名称:'foo',数量:2,价格:20},
{名称:'bar',数量:3,价格:150},
{名称:'baz',数量:1,价格:80}
]
},
计算:{
total(){返回此.list.reduce((total,item)=>item.price*item.quantity+total,0);},
}
})