Создание единого массива значений в JavaScript

#javascript #arrays

#javascript #массивы

Вопрос:

почему отображается следующий код undefined ? Разве нам не разрешено создавать массив с одним значением? При вводе двух значений эта ошибка не будет отображаться. Это проблема с Javascript?

 <script>
var tech = new Array(21);
alert(tech[0]);
</script>
  

Комментарии:

1. чтобы понять, что происходит, console.log(tech.valueOf()); или console.log(tech.toString());

Ответ №1:

new Array(21) создает массив длиной 21. Если вы хотите создать массив с одним значением, состоящий из числа, используйте квадратные скобки, [21] :

 var tech = [ 21 ];
alert(tech[0]);
  

Если вы хотите динамически заполнить массив, используйте .push метод:

 var filler = [];
for(var i=0; i<5; i  ){
    filler.push(i); //Example, pushing 5 integers in an array
}
//Filler is now equivalent to: [0, 1, 2, 3, 4]
  

Когда конструктор массива получает один параметр p , который является положительным числом, будет создан массив, состоящий из p элементов. Эта функция может использоваться для повторения строк, например:

 var repeat = new Array(10);
repeat = repeat.join("To repeat"); //Repeat the string 9x
  

Комментарии:

1. Это неверно. Массив не содержит никаких элементов, скорее он имеет length свойство этого значения. Есть разница: a=Array(3); b=[1,2,3]; 1 in b === true; 1 in a === false

2. @Rob W — но дело в том, что я динамически создаю массивы в цикле, некоторые из них имеют однозначное значение, некоторые — нет. Итак, какой способ лучше?

3. Вы все еще неверны после вашего редактирования. Они не инициализируются как undefined . Они просто не существуют.

4. @ImranOmarBukhsh Используйте .push метод для заполнения массива. Смотрите мой обновленный ответ.

Ответ №2:

с помощью new Array(21) вы фактически создаете массив с 21 элементом в нем.

Если вы хотите создать массив с одним значением ’21’, то это:

 var tech = [21];
alert(tech[0]);
  

Ответ №3:

Вы можете создать массив со значением, используя Array.of

 let arr = Array.of(8)
console.log(arr)  

Ответ №4:

ребята, ответ был таким простым:

 <script>
var tech = new Array();
tech.push(21);
alert(tech[0]);
</script>
  

Комментарии:

1. Я предлагаю принять ответ @zvona как лучший ответ.

Ответ №5:

Приведенный выше пример определяет массив с именем tech с 21 позицией. Вы должны определить это так

 var tech = new Array('21');
alert(tech[0]);
  

Ответ №6:

можно использовать push или использовать скобки, передача одного значения похожа на инициализацию длины

 var tech = new Array();
tech.push(10);
console.log(tech[0]);   


 var tech = new Array(5);
console.log(tech.length);  // length = 5
tech.push(10);  // will add as a 6th element i.e. a[5]
console.log(tech.length);   // length = 6
console.log(tech[0]);   // undefined 
console.log(tech[5]);  // 10   


или простой способ

 var tech = [10];
console.log(tech[0]);   

Ответ №7:

Вот мое решение.

     var tech = new Array(); //create an empty array
    tech.push(21); //Append items to the array
    console.log(tech); // console array the array
  

Будьте осторожны, чтобы избежать этого;
var array = new Array(n) , это создает пустой массив длиной n, затем, если вы нажмете; вы просто добавите новый элемент в конец массива, и новая длина массива будет равна n 1 , и ваш новый массив будет выглядеть так array = [Empty*21,new item ]

Ответ №8:

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

 new Array(1).fill(4)// [ 4 ]
  

Он заполнит все элементы построенного массива статическим значением (4 в нашем случае).

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