前端js获取对象中的值

{"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);