需要遍历具有对象Vue

时间:2019-07-03 10:19:17

标签: javascript vue.js

我有一个数组列表,每个列表都是对象组。我需要遍历每个组,并检查列表中的对象是否满足条件。

这是我们能够做的,但是并不会遍历每个对象。

 for (i = 1; i <= this.portfolioDetails.length; i++) {

    for (var j = 1; j < this.portfolioDetails[i].length; j++) 
    {
       console.log(portfolioDetails[i][j]);
    }
 }

这是数组对象的列表:

portfolioDetails:Array[3]
    0:Object
      ACCOUNTID:"S1001"
      ACCOUNTNAME:"Bla bla bla"
      ACCRUEDINTERESTALL:0
      PRICE:0.69
      UNITS:60.49
      VALUE:41.98
      product:null
    1:Object
      ACCOUNTID:"S1002"
      ACCOUNTNAME:"blo bla blo"
      ACCRUEDINTERESTALL:0
      PRICE:0.69
      UNITS:60.49
      VALUE:41.98
      product:null
    2:Object
      ACCOUNTID:"S1003"
      ACCOUNTNAME:"blik blik blik"
      ACCRUEDINTERESTALL:0
      PRICE:0.69
      UNITS:60.49
      VALUE:41.98
      product:null

3 个答案:

答案 0 :(得分:1)

这是简单的JavaScript,与VueJS本身无关。迭代无法正常工作的原因是,您从i = 1开始,而在编码中,索引从0开始。而且,您在比较语句<=中包含了最后一个数字,该数字不在数组(因为您从0开始计数,而不是从1开始计数)。最重要的是,您只需按对象的键即可打印出对象值。所有这些加起来就是这样:

for (let i = 0; i < this.portfolioDetails.length; i++) {
    console.log(this.portfolioDetails[i].ACCOUNTID)
}

答案 1 :(得分:0)

您的顶部循环迭代应如下所示:

for (i = 0; i < this.portfolioDetails.length; i++) { ... }

此代码应该有效:

for (let i = 0; i < this.portfolioDetails.length; i--) {
  for (let j = 0; j < this.portfolioDetails[i].length; j--) 
  {
    // Check conditions here
    if (this.portfoiloDetails[i][j].ACCOUNTID === 'S1002') { 
     // Actions goes here
    }
  }
}

答案 2 :(得分:0)

嗨,给定的数组对象列表尚不清楚,但是如果您要遍历JSON数据类型,则可以使用下面的代码。该代码可动态发现属性并返回每个属性的值。

<script>
    var portfolioDetails = { 'data': [ 
         { 'fname': 'joe', 'lname': 'smith', 'number': '34'} , 
         { 'fname': 'jim', 'lname': 'Hoff', 'number': '12'} , 
         { 'fname': 'jack', 'lname': 'jones', 'number': '84'}   
    ] };

    //iterate over the records
    for (i = 0; i < portfolioDetails["data"].length; i++) {
       var data = this.portfolioDetails["data"][i];
       var propertiesCount = Object.getOwnPropertyNames(data).length;

       //iterate over the properties of each record
       for (var j = 0; j < propertiesCount; j++) 
       {
           var propName = Object.getOwnPropertyNames (data)[j];
           console.log(portfolioDetails["data"][i][propName]);

       }
       }
</script>