Javascript 获取数组值之和时如何修复[Object]响应?

Javascript 获取数组值之和时如何修复[Object]响应?,javascript,arrays,vue.js,vuetify.js,Javascript,Arrays,Vue.js,Vuetify.js,我试图用vuejs和vuetify建立一个评分调查。Im使用步进器组件和选择从用户那里获取答案。根据用户的分数,建议在最后提供一个服务包 如果用户分数低于25,建议使用essentials软件包。 如果用户分数在25到50之间,建议使用pro软件包。 如果用户得分为50分或以上,建议使用高级套餐 到目前为止,我已经能够将所有答案放入一个名为“questionAnswer”的空数组中。我有一个名为questionId(“I”)的属性,它包含给定答案的分数 当我尝试对属性求和时,得到以下响应:[Ob

我试图用vuejs和vuetify建立一个评分调查。Im使用步进器组件和选择从用户那里获取答案。根据用户的分数,建议在最后提供一个服务包

如果用户分数低于25,建议使用essentials软件包。 如果用户分数在25到50之间,建议使用pro软件包。 如果用户得分为50分或以上,建议使用高级套餐

到目前为止,我已经能够将所有答案放入一个名为“questionAnswer”的空数组中。我有一个名为questionId(“I”)的属性,它包含给定答案的分数

当我尝试对属性求和时,得到以下响应:[Object Object][Object Object][Object Object][Object Object][Object Object][Object Object][Object Object]

这是控制台中的响应,第一个块是questionId的值,第二个块是我尝试对数组值求和时的响应。

响应(无JSON解析)

这是脚本标记中的代码,每个问题都有自己的回答数组。items1到Items7数组包含响应,这些响应被推送到一个名为questionAnswer的新数组中

export default {
data () {
  return {
    e1: 1,
    steps: 8,
    vertical: false,
    altLabels: false,
    editable: true,
    value: null,
    items1: [{ id: 50, name: "As soon as possible (Less than 1 hour)", val: 50 }, {id: 25, name: "A quick response time (Less than 2 hours)", val: 25}, {id: 0, name: "Moderately fast (Less than 6 hours)", val: 0}],
    items2: [{id: 50, name: 'Yes (Premium only)', val: 50 }, {id: 0, name: 'No', val: 0}],
    items3: [{id: 50, name: 'Yes (Premium and Professional)', val: 50}, {id: 0, name: 'No', val: 0}],
    items4: [{id: 25, name: 'Yes (Premium only)', val: 25}, {id: 0, name: 'No', val: 0}],
    items5: [{id: 25, name: 'Extensive (Premium)', val: 25}, {id: 0, name: 'Basic', val: 0}],
    items6: [{id: 25, name: 'Yes (Premium and Professional)', val: 0}, {id: 0 , name: 'No', val: 0}],
    items7: ['Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','District of Columbia','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania','Puerto Rico','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming'],
    items8: ['1 - 10', '10 - 25', '25 - 50', '50 - 100', '100 - 500', ' 500+ '],
    questionAnswer: [],
  }
},

watch: {
  steps (val) {
    if (this.e1 > val) {
      this.e1 = val
    }
  },
  vertical () {
    this.e1 = 2
    requestAnimationFrame(() => this.e1 = 1) // Workarounds
  },
},

methods: {
  onInput (val) {
    this.steps = parseInt(val)

  },
  nextStep(n) {
    if (n === this.steps) {
      this.e1 = n
    } else {
      this.e1 = n + 1
    }
  },

submit(){

console.table(JSON.parse(JSON.stringify(this.questionAnswer)));

  var response1 = "Premium Package";
  var response2 = "Pro Package";
  var response3 = "Essentials Package";
  var response4 = "There are questions missing, please select a valid answer";
  var response5 = "An error occured, please refresh your browser page";

    const add = (a, b) =>
                  a + b

    const sum = this.questionAnswer.reduce(add)
    console.table(sum);

  if (sum >= 50){

    window.alert(response1);
  } else if(sum <= 50 && sum >= 25) {

    window.alert(response2);
  } else if(sum < 25){

    window.alert(response3);
  }
},

addAnswer(i){  
    this.questionAnswer.push({
      questionId: i,         
    })    
}, 
导出默认值{
数据(){
返回{
e1:1,
步骤:8,
垂直:假,
altLabels:错误,
是的,
值:null,
项目1:[{id:50,名称:“尽快(少于1小时)”,val:50},{id:25,名称:“快速响应时间(少于2小时)”,val:25},{id:0,名称:“适度快速(少于6小时)”,val:0},
items2:[{id:50,名称:'Yes(仅限高级)',val:50},{id:0,名称:'No',val:0}],
项目3:[{id:50,名称:'Yes(高级和专业)'val:50},{id:0,名称:'No',val:0}],
项目4:[{id:25,名称:'Yes(仅限高级)',val:25},{id:0,名称:'No',val:0}],
items5:[{id:25,name:'Extensive(Premium)',val:25},{id:0,name:'Basic',val:0}],
项目6:[{id:25,名称:'Yes(高级和专业)',val:0},{id:0,名称:'No',val:0}],
项目7:[“阿拉巴马州”、“阿拉斯加”、“亚利桑那州”、“阿肯色州”、“加利福尼亚州”、“科罗拉多州”、“康涅狄格州”、“特拉华州”、“哥伦比亚特区”、“佛罗里达州”、“乔治亚州”、“夏威夷州”、“爱达荷州”、“伊利诺伊州”、“印第安纳州”、“爱荷华州”、“堪萨斯州”、“肯塔基州”、“路易斯安那州”、“缅因州”、“马里兰州”、“马萨诸塞州”、“密歇根州”、“明尼苏达州”、“密西西比州”、“密苏里州”、“蒙大拿州”、“内布拉斯加州”、“内华达州”、“新罕布什尔州”、“新泽西州”y’、‘新墨西哥’、‘纽约’、‘北卡罗来纳’、‘北达科他’、‘俄亥俄’、‘俄克拉何马’、‘俄勒冈’、‘宾夕法尼亚’、‘波多黎各’、‘罗德岛’、‘南卡罗来纳’、‘南达科他’、‘田纳西’、‘德克萨斯’、‘犹他’、‘佛蒙特’、‘弗吉尼亚’、‘华盛顿’、‘西弗吉尼亚’、‘威斯康星州’、‘怀俄明州’,
第8项:['1-10','10-25','25-50','50-100','100-500','500+'],
问题解答:[],
}
},
观察:{
步骤(val){
如果(this.e1>val){
这是1.e1=val
}
},
垂直(){
这是1.e1=2
requestAnimationFrame(()=>this.e1=1)//解决方法
},
},
方法:{
onInput(val){
this.steps=parseInt(val)
},
下一步(n){
如果(n==this.steps){
这是1.e1=n
}否则{
这是1.e1=n+1
}
},
提交(){
table(JSON.parse(JSON.stringify(this.questionAnswer));
var response1=“高级套餐”;
var response2=“Pro软件包”;
var response3=“Essentials软件包”;
var response4=“缺少问题,请选择有效答案”;
var response5=“发生错误,请刷新浏览器页面”;
常量添加=(a,b)=>
a+b
const sum=this.questionAnswer.reduce(add)
表(总和);
如果(总和>=50){
窗口警报(响应1);
}否则,如果(总和=25){
窗口警报(响应2);
}否则,如果(总和<25){
窗口警报(响应3);
}
},
答复(i){
这个问题答案推({
问题一:我,
})    
}, 
}


也许我应该使用另一种方法?我还探索了搜索某些值的可能性。例如,如果用户给出的答案值为50,则应向该用户显示“高级包”。我还尝试使用
find()进行数组搜索
method,但即使值在那里,它也返回false。我有一种不好的感觉,我在这里遗漏了一些东西。也许我需要转换为不同的对象类型,或者我在这里走得太远了吗?我花了太多时间试图解决这个问题,如果有任何和所有的见解可以让我挽救这段代码,我将不胜感激,T感谢您的时间。

以下是如何对对象数组中对象的属性求和。我写了一个简单的示例,您可以将其应用到自己的代码中

var obj=[
{value:5},
{value:3},
{value:2},
{值:8}
];
var总和=对象减少((a,b)=>a+b.值,0);

console.log(sum);
以下是如何对对象数组中对象的属性求和。我编写了一个简单的示例,您可以将其应用到自己的代码中

var obj=[
{value:5},
{value:3},
{value:2},
{值:8}
];
var总和=对象减少((a,b)=>a+b.值,0);

console.log(sum);
您正在尝试将对象添加到其他对象中。相反,您需要添加
a.property+b.property
“property”,因为对象上的任何键都具有您要求和的值。您正在尝试将对象添加到其他对象中。相反,您需要添加
a.property+b.property
“property”作为对象上的任何键都有您要求和的值。您好,先生,谢谢您的回答。它更清晰一些,但现在的响应是NaN(不是数字)。我使用了此代码…var sum=this.questionAnswer.reduce((a,b)=>a+b.val,0);@AlCapwned,因为您的数组(questionAnswer)可能不正确(例如:某些项目不包含“val”属性)。您是否可以评估
console.log(问题答案)
并将控制台输出粘贴到此处?@alcapowned您是否可以使用pastebin.com?控制台响应