С nginx переписывать правила не соответствует регулярное выражение (.+)

Мы пытаемся переписать такой ссылке:

https://example.com/some/thing/?tx_career_view%5BjobUid%5D=12&tx_career_view%5Baction%5D=show&tx_career_view%5Bcontroller%5D=Job&cHash=2d8595af0dfc0bf1e8b75d88849f

Наше правило выглядит так:

rewrite ^/some/thing/(.+)   /some/where/else/ permanent;

В https://regex101.com/ он говорит, что наше регулярное выражение, однако nginx не переписать.

+3
2019-09-17 15:22:52
источник
3 ответа

Вы очень близки, поскольку оба массива имеют разный порядок значений, и вы, соответствия, индекса ( , так что вам нужно для сортировки массивов первого, то проверка на равенство

var cekDiff = function(arr1, arr2) {
  let newArr1 = [...arr1].sort((a, b) => a - b)
  let newArr2 = [...arr2].sort((a, b) => a - b)
  var maxLength = 0,
    cekTrue = 0;
  if (newArr1.length > newArr2.length) maxLength = arr1.length;
  else maxLength = newArr2.length;
  for (var i = 0; i < maxLength; i++) {
    if (newArr1[i] == newArr2[i]) {
      cekTrue++;
    }
  }
  if (cekTrue >= maxLength) return true;
  else return false;
}


if (cekDiff([0, 1, 2, 4, 3], [0, 1, 2, 3, 4])) {
  console.log("match");
} else {
  console.log("different");
}

+1
2019-09-17 23:14:16

Используйте сокращения, чтобы проверить вас массивы

const isArrayExact = (arr1, arr2) => arr1.reduce((acc, curr, index) => acc && ,true)

Сравниваем каждый элемент, но проверить, если существуют

+1
2019-09-17 23:14:16

Можно считать каждый элемент с увеличения счетчика или уменьшение. тогда получим значение и если все нули, возврат в.

function sameValues(a, b) {
    const
        counter = (o, i) => k => o[k] = (o[k] || 0) + i,
        count = {};
    
    a.forEach(counter(count, 1));
    b.forEach(counter(count, -1));
    
    return !Object.values(count).some(Boolean);
}


console.log(sameValues([0, 1, 2, 4, 3], [0, 1, 2, 3, 4]));
console.log(sameValues([0, 1, 2, 4, 3], [0, 1, 2, 3, 4, 5]));

+1
2019-09-17 23:14:16

Посмотрите другие вопросы по меткам