js用for对数组的操作,大神进

现有一段json类的数组:可以先无视。。。
[{"xvalue":"美国","yvalue":"方法","value":"42"},
{"xvalue":"美国","yvalue":"计算机","value":"92"},
{"xvalue":"山东","yvalue":"一种","value":"100"},
{"xvalue":"山东","yvalue":"系统","value":"94"},
{"xvalue":"山东","yvalue":"计算机","value":"177"},
{"xvalue":"上海","yvalue":"方法","value":"47"},
{"xvalue":"上海","yvalue":"的","value":"55"},
{"xvalue":"上海","yvalue":"装置","value":"35"}];
我将它提取处理了下变成
var x=[];//用于存放xvalue里的值
var y=[];//用于存放yvalue里的值
然后得到他们的内容就是
x=['美国','山东','上海'];//按顺序存放并且去掉了重复
y=['方法','计算机','一种','系统','的','装置'];//按顺序存放并且去掉了重复
再新建一个 动态 数组 v 用于存放y数组与x数组交互的值
var v=[];
何为交互?就是用y数组的值去遍历x数组里的值,看上述json的'value'中是否相交
比如 y数组的值 '方法'→x数组的值 '美国' 上面的json里的value有值是42
'方法'→'山东' json里的value为空那么就给它一个0
'方法'→'上海' json里的value为空那么就给它一个0
于是v数组的第一遍循环得到的值为[42,0,0]
第二次循环就是y数组里的'计算机'→遍历x数组的值,
比如 '计算机'→'美国' 上面的json里的value有值是92
'计算机'→'山东' 上面的json里的value有值是117
'计算机'→'上海' json里的value为空那么就给它一个0
于是v数组的第二遍循环得到的值为[92,117,0]
从上述可以看出规律x数组的长度是v的长度,y数值的长度是v的循环次数
问:如何动态的去判断为不为空然后绘制v数组的值?
大神请用代码说话不要说思路,,,跪谢。

var data = [{"xvalue":"美国","yvalue":"方法","value":"42"},
{"xvalue":"美国","yvalue":"计算机","value":"92"},
{"xvalue":"山东","yvalue":"一种","value":"100"},
{"xvalue":"山东","yvalue":"系统","value":"94"},
{"xvalue":"山东","yvalue":"计算机","value":"177"},
{"xvalue":"上海","yvalue":"方法","value":"47"},
{"xvalue":"上海","yvalue":"的","value":"55"},
{"xvalue":"上海","yvalue":"装置","value":"35"}];

var x = ['美国','山东','上海'];
var y = ['方法','计算机','一种','系统','的','装置'];

var getV = function(yy, x, data){
   var v = [];
   for(var j=0;j<x.length;j++){
       var xj = x[j], yes = 0;
       for(var i =0;i<data.length;i++){
           var di = data[i];
           if(di.xvalue==xj && di.yvalue==yy){
              v.push(di.value);
              yes = 1;
              break;
           }
       }
       if(!yes){
           v.push(0);
       }
   }
   return v;
}

var yy = "方法";
var v = getV(yy, x, data);
console.log(v);

yy = "计算机";
v = getV(yy, x, data);
console.log(v);

追问

关注大神你有段时间了,我很多对于数据的操作的问题大部分也都是你回答的,,,真是感谢你了

温馨提示:答案为网友推荐,仅供参考