#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.