Как перенести часть массива на новую строку? - PullRequest
0 голосов
/ 03 июля 2019

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

My App.vue:

<template>
  <div id="app">
    <div class="mounth">{{ mounthDays }}</div>
  </div>
</template>

<script>
export default {
  name: 'app',
  data () {
    return {
        mounthDays: [],
    }
  },
  mounted() {
    for (var x = 0; x < 12; x++) {
      for (var i = 1; i <= 31; i++) {
        this.mounthDays.push(i)
      }
    }
    if(this.mounthDays[123] === 31){
      this.mounthDays.splice(59, 3)
      this.mounthDays.splice(120, 1)
      this.mounthDays.splice(181, 1)
      this.mounthDays.splice(273, 1)
      this.mounthDays.splice(334, 1)



    }
    console.log(this.mounthDays)

    }
  }
</script>

enter image description here

That's how I want my array to look

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

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

<template>
  <div>
    <div v-for="(month, index) in monthsAndDays" :key="index">{{ month }}</div>
  </div>
</template>

<script>
// https://stackoverflow.com/questions/1184334
const daysInMonth = (month, year) => new Date(year, month, 0).getDate();

// [1..n]
const oneToN = n => Array.from(Array(n), (_, i) => i + 1);

export default {
  computed: {
    monthsAndDays() {
      const year = new Date().getFullYear();
      return oneToN(12).map(i => oneToN(daysInMonth(i, year)));
    },
  },
};
</script>
0 голосов
/ 03 июля 2019

Вместо того, чтобы иметь массив всех чисел, сделайте его массивом массивов, а затем напечатайте его в отдельных строках. Примерно так должно работать:

var monthsWithDays = [];

for (var x = 0; x < 12; x++) {
    var days = [];

    for (var i = 1; i <= 31; i++) {
        days.push(i)
    }

    monthsWithDays.push(days);
}

monthsWithDays.forEach(daysArray => console.log(daysArray));

Если вы хотите просто строку с символами новой строки, то что-то вроде этого должно работать:

monthsWithDays.map(daysArray => daysArray.join(",")).join("\n")

EDIT: Теперь я вижу, что вы пытаетесь сделать со своими splice вещами. Я не думаю, что у вас есть правильный подход здесь. Но приведенный выше код может быть исправлен для этого:

function daysInMonth (month, year) {
    return new Date(year, month, 0).getDate();
}

var monthsWithDays = [];

for (var x = 1; x <= 12; x++) {
    var days = [];

    for (var i = 1; i <= daysInMonth(x, 2019) ; i++) {
        days.push(i)
    }

    monthsWithDays.push(days);
}

monthsWithDays.map(daysArray => daysArray.join(",")).join("\n")

Я позаимствовал функцию daysInMonth у другой вопрос здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...