Как нажимать объект, следуя его структуре массиву объектов

Для этого вам вообще не нужен ajax. Если вы просто установите «download.php» как href на кнопке или, если это не ссылка, используйте:

window.location = 'download.php';

Браузер должен распознать двоичную загрузку и не загружать фактическую страницу, а просто служит для загрузки файла.

-4
задан SA__ 13 July 2018 в 07:21
поделиться

2 ответа

Вы можете выполнять итерацию по значениям объекта и на основе индекса нажимать объект в массиве.

const input = { 'a': 'Alpha', 'b': 'Australia', 'a_x': 'Beta', 'b_y': 'Canada', 'a_3': 'Charlie', 'b_4': 'China' },
      result = Object.values(input).reduce((r,k,i) => {
        i%2 == 0 ? r.push({name: k})  : r[Math.floor(i/2)].place = k;
        return r;
      },[]);
console.log(result);

1
ответ дан Hassan Imam 17 August 2018 в 13:27
поделиться
  • 1
    Спасибо, что работает – SA__ 13 July 2018 в 07:31
  • 2
    @SA__: Это ненадежно, решение основано исключительно на последовательности, а порядок собственности в объекте не является гарантией. – Isaac 13 July 2018 в 07:34

Мы используем Object.values для повторения значений; и Array.reduce, чтобы создать окончательный массив, проходящий через исходные данные.

const arr = {
  a: 'Alpha',
  b: 'Australia',
  a_x: 'Beta',
  b_y: 'Canada',
  a_3: 'Charlie',
  b_4: 'China',
};

const finalArray = Object.values(arr).reduce((tmp, x, xi) => {
  // only treat one on two
  if (!(xi % 2)) return tmp;

  return [
    ...tmp,

    {
      // Get the previous key value
      name: arr[Object.keys(arr)[xi - 1]],

      place: x,
    },
  ];
}, []);

console.log(finalArray);

1
ответ дан Grégory NEUT 17 August 2018 в 13:27
поделиться
Другие вопросы по тегам:

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