我可以为变量分配数组值吗?

时间:2017-12-10 00:38:58

标签: javascript arrays

我似乎无法为变量分配数组值。它总是返回undefined。

在我的代码中,我设置了currentWord = text [wordPos]。在代码的最后我有控制台记录的currentWord和文本[wordPos]。我的想法是他们应该返回相同的价值,但他们不会。 currentWord返回undefined,text [wordPos]返回正确的值(' text'数组中的第一个单词)。

解决。我错误地忘记了我有2个数组,并认为文本数组不是空的,但确实如此。单词数组是我填写在单独文件中的数组。



var text = Array();

var wordPos = 0;
var currentWord = text[wordPos];

function gen() {
  text = [];
  var random;

  for (var i = 0; i < 10; i++) {
    random = words[Math.floor(Math.random() * 50)];
    text.push(random);
  }
  document.getElementById('text').innerHTML = text.join(" ");

  console.log(currentWord);
  console.log(text[wordPos]);
}
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:0)

当前工作是未定义的,因为您创建了一个数组对象但从未将值推入其中。它传输变量的当前值而不是引用。

答案 1 :(得分:0)

文本的索引0没有值。如果为文本数组指定一些值,那么你应该很好!

答案 2 :(得分:0)

<强>更新

阅读上面关于原始示例中两个阵列的OP注释。根据此信息,以下脚本模拟50个不同值的导入数组单词,以生成十个以空格分隔的数字的文本并指示其第一个值:

&#13;
&#13;
// simulating an array imported from a separate file
  var words = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50];
  
  
  function gen() {
  var wordPos = 0; 
  var currentWord = "";

  var arr = [];
  var randomVal;
  var d = document;
  d.g = d.getElementById;
  var pText = d.g('text');
  
  // get each of 10 values by randomly selecting an element's key
  for (var i = 0; i < 10; i++) {
    randomVal = words[ Math.floor( Math.random() * 50 ) ];
    arr.push( randomVal );
   }
  
  pText.innerHTML = arr.join(" ");
  currentWord = arr[wordPos]; 
  console.log("Current word: ",currentWord );
}

gen();
&#13;
<p id="text"></p>
&#13;
&#13;
&#13;

此脚本随机选择10个数字,并通过变量 randomVal 将它们添加到空数组中。此变量在for循环的每次迭代中获取一个值,在此期间,变量将传递给 arr 的push()方法,以便将其附加到数组中。一旦循环终止,脚本joins空格字符上的 arr 元素,产生一个数字值以空格分隔的字符串。

当console.log语句显示文本中出现的第一个数值时,可以看出脚本正常工作。