Упорядочивать array из-за близости в число

Нуждался в том, чтобы приказать такой array, чтобы различие между Вашими элементами (númericos) они имели самое меньшее различие по отношению к определенной стоимости.

Эдж. Если стоимости 10:

let arr = [2,4,23,33];

Мне нужно, чтобы это осталось так:

[4,2,23,33]

Потому что

10 - 4  = 6;
10 - 2  = 8;
23 - 10 = 13;
33 - 10 = 23;

Спасибо с уже

3
задан 03.11.2017, 03:56
3 ответа

Стараясь упрощать немного c¦digo:

function diffSort(value, arr){
  return arr.sort((x, y) => Math.abs(x-value)>Math.abs(y-value));
}

console.log(diffSort(10, [2,66,4,33,6,23,99,9.5,55]));
5
ответ дан 24.11.2019, 04:31
  • 1
    Uh quedó лучше así. Хотя, поскольку я не гений с JS, я не понимаю return callback. Возврати booleano, entendí в который было нужно, чтобы это был nú морской окунь. –  Emanuel Friedrich 03.11.2017, 15:35
  • 2
    В действительности он делает conversió n implí назначь встречу, но ты можешь заменять > одним - и obtendrá s тот же результат в ordenació n. –  Asier Villanueva 03.11.2017, 15:42
  • 3
    Пометила твоя как приспособленная. Я вижу, что оно функционирует и - меньше có я говорю. –  Emanuel Friedrich 04.11.2017, 21:37

Ну, pensé 5 минут и resolv¦-. Posteo, если он подает им

function ordenar(value, arr) {
  return arr.sort(function(x, y) {
    let difx = Math.abs(parseFloat(x) - value);
    let dify = Math.abs(parseFloat(y) - value);
    if (difx < dify) return -1;
    if (difx == dify) return 0;
    return 1;
  });
}


let array = [2, 4, 23, 33];

console.log(ordenar(10, array));
3
ответ дан 24.11.2019, 04:31

	
function diffSort(n,...arr){
var f = 0, max = arr[0].length, na = parseInt(n, 10), sorted = [], torever = 0,
    fn = [];
for(;f<max;f++){
var index = 0, actual = arr[0][f];
if(actual > na) torever++;  
while(n-actual < (na-sorted[sorted.length-1-index])) {index++;} 
sorted.splice(sorted.length-index,0 , actual);  
}  
  for(var i=0;i<torever;i++){
  fn.unshift(sorted[i]);    
  }
  var b = sorted.concat(fn);
  b.splice(0,torever)
  return b;
}

console.log(diffSort(10, [2,66,4,33,6,23,99,9.5,55]))
-2
ответ дан 24.11.2019, 04:31
  • 1
    Чтобы наслаждаться думая другой промежуток времени má s jeje, когда это будет у editaré –  Eduardo Sebastian 03.11.2017, 11:58
  • 2
    Я заношу в список, хотя intentaré улучшать это, так как я не использую ningú n sort родной –  Eduardo Sebastian 03.11.2017, 12:08
  • 3
    Если тебе интересно наслаждаться думая немного má s, podé s пытаться с 11 ;-)... Хорошая стратегия состоит в том, чтобы использовать Math.abs (), как respondió автор вопроса. –  Mariano 03.11.2017, 12:12
  • 4
    nú морской окунь 11 где? coloqué в array и в nú морской окунь ссылки и продолжи функционировать –  Eduardo Sebastian 03.11.2017, 12:14
  • 5
    ох ох... хороший creó что llegaré отсроченный в школу, intentaré в течение моего времени отдыха jajjaja, (я верю в то, что tendré который каждый denuevo думать), хороший день!! –  Eduardo Sebastian 03.11.2017, 12:41