Javascript Console.log(字符串)doensn';我什么也不退

Javascript Console.log(字符串)doensn';我什么也不退,javascript,html,arrays,string,Javascript,Html,Arrays,String,我在控制台记录字符串时遇到了一个问题,我刚刚从一个数组中拼凑了一个字符串——为什么当我调用“console.log(text2);”时,它不在控制台中打印任何内容 我只能认为这与数组索引不是数字,而是与元素同名这一事实有关——这是因为我是如何创建数组的:a2[element]=element,但我不知道如何才能做到这一点 下面是Javascript代码--------------------------- const text = document.getElementById('textfi

我在控制台记录字符串时遇到了一个问题,我刚刚从一个数组中拼凑了一个字符串——为什么当我调用“console.log(text2);”时,它不在控制台中打印任何内容

我只能认为这与数组索引不是数字,而是与元素同名这一事实有关——这是因为我是如何创建数组的:
a2[element]=element,但我不知道如何才能做到这一点

下面是Javascript代码---------------------------

const text = document.getElementById('textfield');

let a2 = new Array(); 


document.querySelector('form.input-form').addEventListener('submit', function (e) {

    e.preventDefault();

    console.log(text.value);   


    const a1 = text.value.split(' ');
    console.log(a1);


      a1.forEach((element) => {
        function shuffle(element) {
            var arr = element.split('');           // Convert String to array
            
            arr.sort(function() {
              return 0.5 - Math.random();
            });  
            element = arr.join('');                // Convert Array to string
            return element;                        // Return shuffled string
            
          }
    
        element = shuffle(element);
        console.log(element);

       a2 [element] = element; //creates array a2

      });

      
    console.log(a2);
    alert(typeof a2); // returns "object"


    //I want to create a string out of a2 by joining the words back together with ' '

    const text2 = a2.join(' ');
    alert(typeof text2); // returns "string"
  
    console.log(text2); //doesn't return anything





    //lastly I want to output the text back into the html site
    //document.getElementById("output").innerHTML = text2;


});

a2[element]
看起来像是语法错误?这里有很多错误。首先,使用
a2=[]
而不是
new Array()
(使用原语语法),其次,
a2[element]=element
应该做什么?如果
a2
是一个数组,则其索引是数字。即使
a2
是一个对象原语,它的索引将是字符串,并且
a2[element]=element
仍然不起作用:它将执行类型强制,您的元素将在“某处”,但不是您认为它在的地方。因此,
元素
不在“数组中”,它“以某种方式存储为对象属性,
join()
将是空数组上的一个连接。@Mike'Pomax'Kamerman解释了为什么
join
不会将它们包括在输出中<代码>a=[];a、 prop='值';a、 加入(“”)/“”
(而且:永远不要使用alert。继续使用console.log,因为它会准确地显示您告诉它的内容,而alert不会。另外,不要在foreach中声明
shuffle
,您不需要每次迭代都重新声明它。另外,如果
element
是一个字符串,不要调用它
element
)是的,这就是我写的@evolutionxbox?数组是空的,即使你设置了对象属性。