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>
答案 0 :(得分:0)
问题是我必须在找到时重置精确定位变量 现有号码的新短信。
所以:
if(pinpoint>-10) {
matrixDTwoSize = matrix[pinpoint].length;
matrix[pinpoint][matrixDTwoSize]=actualBODY;
pinpoint = -10;
}