@Petesso

Как найти границы двумерного массива?

Есть наполовину двумерный массив с кривой структурой, необходимо найти его границы по x и y в виде диапазонов. То есть в результате json-массив ниже должен будет выглядеть как "x: от -83 до 194, a y: от 0 до 214"
{"0":["2","2","2","2"],
"1":["2","0"],
"28":["0","0","0","0"],
"29":["0","2"],
"30":{"3":"2","0":"2","14":"2","6":"1"},
"-2":{"8":"2","2":"1","3":"1"},
"36":{"27":"2","15":"1","16":"1"},
"-83":{"67":"2"},
"194":{"214":"2"},
"178":{"192":"2"},
"127":{"145":"2"},
"55":{"147":"2"},
"47":{"21":"1"},
"40":{"19":"1"},
"37":{"19":"1"},
"65":{"17":"1"}}
  • Вопрос задан
  • 393 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ответ написан
Комментировать
DIITHiTech
@DIITHiTech
Fullstack javascript developer
Или с использованием родных возможностей jsfiddle.net/a36pq2L0
var obj = {
                "0":["2","2","2","2"],
                "1":["2","0"],
                "28":["0","0","0","0"],
                "29":["0","2"],
                "30":{"3":"2","0":"2","14":"2","6":"1"},
                "-2":{"8":"2","2":"1","3":"1"},
                "36":{"27":"2","15":"1","16":"1"},
                "-83":{"67":"2"},
                "194":{"214":"2"},
                "178":{"192":"2"},
                "127":{"145":"2"},
                "55":{"147":"2"},
                "47":{"21":"1"},
                "40":{"19":"1"},
                "37":{"19":"1"},
                "65":{"17":"1"}};

            var  arr=Object.keys(obj),  stack=[]

            arr.forEach(function(key){
                var en=obj[key];
                stack.push.apply(stack,Object.prototype.toString.call(en)=='[object Array]'?en:Object.keys(en));
            })

            var xMin=Math.min.apply(null, arr),
                xMax=Math.max.apply(null, arr);
                yMin=Math.min.apply(null, stack);
                yMax=Math.max.apply(null, stack);

           alert("["+xMin+", "+xMax+"]\n ["+yMin+","+yMax+"]");
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы