【问题标题】:Javascript is this feature built into JS?Javascript 这个功能是内置在 JS 中的吗?
【发布时间】:2017-04-19 21:39:39
【问题描述】:

在下面的代码中,您会看到它将 arrayi 识别为 array - i。 这个系统是js内置的吗?我正在尝试,当我写 array(i) 而不是 arrayi 时它没有工作。然后问题延伸到问你是否可以做 iarray、ariray、arrayii 或 array(i*i) (只是想弄清楚它是如何工作的语法)。

var array = []
var arrayAmount = prompt("Select number of array")

for (var i = 0; i < arrayAmount; i++) {
  var arrayi = array
  arrayi.push([prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-elemet 2"], ])
  console.log(arrayi)
}
console.log(array1)

编辑:如果 for 循环声明自己的数组而不是复制另一个数组,我检查了代码是否可以工作。原来它不起作用并将arrayi声明为arrayi而不是array1或array2

【问题讨论】:

  • 你指定arrayi = array 所以arrayi array ... 不知道你在问什么?
  • player 来自哪里?你想联系array[i]吗?
  • 你的现场演示抛出错误:ReferenceError: player is not defined
  • 不,“功能”没有内置到 Javascript 中。你误解了一些东西。我不确定那是什么,因为您的问题没有多大意义。
  • 非常抱歉格式化,播放器应该是数组。现已编辑完毕。

标签: javascript syntax formatting


【解决方案1】:

您混淆了几个 JS 概念。我会做出一些假设来解释一些事情,但请随时纠正我,我会调整我的答案。

我相信您的意思是在数组中的特定索引处分配一个值,但您最终做的是创建一个变量 arrayi,它是对 array 的引用:

var array = [];
array[1] = "foo";
console.log(array); // [undefined, "foo"]

您所做的是创建一个引用,这意味着两个不同的变量名将计算为同一个对象/数组:

var array = [];
var reference_to_array = array;

reference_to_array.push("foo");

console.log(array); // ["foo"]
console.log(reference_to_array); // ["foo"]

您最初的问题包括:“当我写 array(i) 而不是 arrayi 时它不起作用”

答案是:使用数组时,array(i) 应更改为 array[i]

您最终没有解决原来的问题,而是创建了新变量。

修复原始代码:

var array = [];
// Added parsing to an integer
var arrayAmount = parseInt(prompt("How many items do you want to add to the array?"));

for (var i = 0; i < arrayAmount; i++) {
  // Method 1: directly access the index
  //array[i] = [ prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-element 2"] ];
  
  // Method 2 (Recommended): push a new element onto the end of the array
  array.push([ prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-element 2"] ]);

  // Log this element
  console.log(array[i]);
}

【讨论】:

  • 啊,这就是我之前尝试做的,但是在这种情况下,我正在制作多个数组(array1 array2 ...),它们都包含单独的元素。如果在我上面写的代码中运行,它会询问它应该创建多少个数组,然后询问这些数组的名称。让我们看一下代码。 “选择数组的数量” 我输入 2 “选择数组 1 的名称” George “选择数组的名称” Katie console.log(array1) [George ["sub-element 1", "sub-elemet 2"], ] console .log(array2)[Katie ["子元素 1", "子元素 2"], ]
  • @AlexM。啊哈!好吧,创建新数组并使用变量名称中的索引绝对是可能的,但您需要使用eval(),这是不必要且非常糟糕的代码。相反,只需使用我的解决方案:您仍然有多个数组,您可以通过 array[i] 调用它们,唯一的区别是您将只有一个变量名称 array (以及更安全的代码!).
  • 好的,谢谢!对代码不太了解,可能很明显。
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 2014-01-08
  • 2013-03-28
  • 2019-09-06
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2021-06-30
相关资源
最近更新 更多