从JSON数组中提取数据并将它们存储在二维数组中

时间:2016-06-26 14:39:56

标签: javascript html arrays json multidimensional-array

Android手机上的短信存储在数据库中,所以我提取了 并将它们存储在JSON数组中。

我想按地址(手机号码)对短信进行分组。

我想要创建的结构是一个二维数组,在第二个dimendsion的每个第一个索引(值0,矩阵[index] [0])存储数字,其他值是sms号。

错误是在存储2个数字后,其他数字没有被存储,并且它们收到的短信存储在第二个数字数组中。

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var sms = {
    '0' : {
        'address' : '+1',
        'body' : 'SMS1'
    },
    '1' : {
        'address' : '+2',
        'body' : 'SMS2'
    },
    '2' : {
        'address' : '+1',
        'body' : 'SMS3'
    },
    '3' : {
        'address' : '+2',
        'body' : 'SMS4'
    },
    '4' : {
        'address' : '+3',
        'body' : 'SMS5'
    },
    '5' : {
        'address' : '+4',
        'body' : 'SMS5'
    }
};

var matrix = [];
var html = "";
var actualBODY = "";
var actualADDRESS ="";
var matrixDOneSize =0;
var matrixDTwoSize =0;
var indexOfValue =0;
var pinpoint =-10;
for(i in sms) {
   if (sms.hasOwnProperty(i)) {

 actualBODY = sms[i]['body'];
 actualADDRESS = sms[i]['address'];
 if(i==0){
  
  matrix[0]=[];
  matrix[0][0]=actualADDRESS;
  matrix[0][1]=actualBODY;
 }
 
 else {
  matrixDOneSize = matrix.length;
  
  for(var j=0;j<matrixDOneSize;j++){
   
      indexOfValue = matrix[j][0].indexOf(actualADDRESS);
       if(indexOfValue>-1){
          pinpoint = j;
          
         }
        
        }
        
        if(pinpoint>-10) {
  matrixDTwoSize = matrix[pinpoint].length;
  matrix[pinpoint][matrixDTwoSize]=actualBODY;
  }
  else {
   matrix[matrixDOneSize]=[];
   matrix[matrixDOneSize][0]=actualADDRESS;
   matrix[matrixDOneSize][1]=actualBODY;
   
  }
  
 }
 
 
 }
 
}
var nexti = matrix.length;
html+="Total numbers ="+nexti;
for(var i=0;i<nexti;i++){
html+= "<ul>Mobile Number = "+ matrix[i][0];

var nextj = matrix[i].length;
var nrsms = nextj-1;
html+= "<li>Nr of SMS= "+nrsms+"</li>";

for(var j=1;j<nextj;j++){

html+= "<li>SMS = "+ matrix[i][j]+"</li>";
}
html+="</ul>";
}
document.getElementById("demo").innerHTML = html;
</script>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

问题是我必须在找到时重置精确定位变量 现有号码的新短信。

所以:

 if(pinpoint>-10) {

  matrixDTwoSize = matrix[pinpoint].length;
  matrix[pinpoint][matrixDTwoSize]=actualBODY;
  pinpoint = -10;
  }