{"type":"line","x1":429,"y1":135,"x2":374,"y2":182,"x3":432,"y3":220,"x4":559,"y4":306,"x5":605,"y5":191,"x6":458,"y6":100}
我该如何从对象中获得x,y的所有的值以及最大值与最小值?
var map = {"type":"line","x1":429,"y1":135,"x2":374,"y2":182,"x3":432,"y3":220,"x4":559,"y4":306,"x5":605,"y5":191,"x6":458,"y6":100};
var x = [], y = [];
for (var n in map) {
if (n.charAt(0)=="x") {
x.push(map[n]);
}
if (n.charAt(0)=="y") {
y.push(map[n]);
}
}
alert("x所有值:"+x+"\nx最大值:"+Math.max.apply(Math,x)+"\nx最小值:"+Math.min.apply(Math,x)+"\ny所有值:"+y+"\ny最大值:"+Math.max.apply(Math,y)+"\ny最小值:"+Math.min.apply(Math,y));
先获取所有的键,然后循环所有的键,根据键名包含x的获取所有的x值,y一样,同样可以获取x的最大值和最小值,希望对你有帮助。
var data = {"type":"line","x1":429,"y1":135,"x2":374,"y2":182,"x3":432,"y3":220,"x4":559,"y4":306,"x5":605,"y5":191,"x6":458,"y6":100};
var preMaxX = data.x1;
for(var i = 2 ; i<=6;i++){
var temp = data.x+"i";
if(preMaxX<temp){
preMaxX = temp;
}
}
var preMaxY = data.y1;
for(var j = 2 ; j<=6;j++){
var tempY = data.x+"j";
if(preMaxY<tempY){
preMaxY = tempY;
}
}
你这数据结构有问题,
换我的话设计是 x为一个数组,y为一个数组,
{"type":"line","x":[429,xxx,xxx],"y":135}
对象中只有6个x,y值,做一次循环即可。
使用jsonarray结构,
var obj = {
"type":"line",
"x1":429,
"y1":135,
"x2":374,
"y2":182,
"x3":432,
"y3":220,
"x4":559,
"y4":306,
"x5":605,
"y5":191,
"x6":458,
"y6":100 },
xArr = [],
yArr = [],
xyArr = [];
// 去除对象中的 "type":"line"
for(var key in obj){
delete obj["type"];
};
// 获取对象的key组成的数组
var objNameArray = Object.keys(obj);
// 遍历key数组
for(var i=0;i<=objNameArray.length-1;i++){
//获取x1,x2,x3,x4,x5,x6...
if( objNameArray[i].indexOf('x')!=-1 ){
xArr.push(obj[objNameArray[i]]);
};
//获取y1,y2,y3,y4,y5,y6...
if( objNameArray[i].indexOf('y')!=-1 ){
yArr.push(obj[objNameArray[i]]);
};
// 获取x1,y1,x2,y2.....
xyArr.push(obj[objNameArray[i]])
}
console.log(xArr);
console.log(yArr);
console.log(xyArr);