2015-02-13 3 views
1

У меня есть простой вопрос. У меня есть JS массив вроде этого:Минимальный и максимальный индекс в массиве JavaScript

data[-5]=[...]; 
data[-2]=[...]; 
data[-1]=[...]; 
data[4]=[...]; 
data[6]=[...]; 
data[7]=[...]; 

Как я могу получить автоматически минимальные (данные [-5]) и максимум (данные [7]) элемент?

+5

Отрицательные индексы в массивах неподходящий в JavaScript. Они будут работать, сортировать, но если вы сделаете что-то вроде сериализации массива с помощью 'JSON.stringify', вы потеряете их, и они не будут отражены в длине массива. – Pointy

+0

Зачем вам когда-либо иметь отрицательный индекс? –

+1

@Pointy: Я не слышал о * любом * языке, чьи массивы могут быть проиндексированы с отрицательными значениями ... – Bergi

ответ

5

Отрицательные индексы не являются фактическими индексами. Они не будут работать все время. Они похожи на любое другое свойство объекта.

Однако вы можете делать то, что хотите, итерируя через перечислимые свойства (Что плохо для массива, но тем не менее) и добавление свойств номера в массив.

var idxs = Object.keys(arr).filter(isFinite); // just take the Number properties 
var min = Math.min.apply(Math, idxs), 
    max = Math.max.apply(Math, idxs); 
2

Short, без петель:

var keys = Object.keys(data); 
var sorted = keys.sort(function(a, b){return a-b}); 
var min = data[sorted[0]]; 
var max = data[sorted[sorted.length-1]]; 
Смежные вопросы