如何在创建数组后转换数组中的var
How to convert a var in an array after it is created?
正在开发我的第一个JS应用程序BlackJack,并且已经在这一点上停滞了一段时间:我试图做的是,如果从数组中调用var a,它可能=11或1,这取决于总值。设置数组后,是否无法更改数组中某个项的值?
var j = 10;
var q = 10;
var k = 10;
var a;
var totalPlayer = 12;
var cards = [2, 2, ..., a, a, a];
function processIt() {
playerCard1 = cards[48]; //this is calling for var a form the array
if (totalPlayer > 11) {
a = 1;
} else {
a = 11;
}
var cpu1 = document.getElementById("cpu1");
cpu1.innerHTML = playerCard1; //this is calling for var a form the array
}
我也尝试过将其转换为刺痛,然后再转换为var,但失败了。
如果我读得正确,您已经设置了阵列
var cards = [2, 2, ..., a, a, a];
现在你想更改所有的a
?
不幸的是(由于a是基元),您将不得不手动更改数组中当前等于a
的值,并将其设置为更新后的值。
for (var i = 0, max = cards.length; i < max; i++)
if(cards[i] === a)
cards[i] = newValue;
编辑
正如hop所指出的,请注意,如果a
等于2,那么数组中等于2的所有索引都将被替换——手动设置为2的前几个索引,以及设置为a
的末尾索引。但既然你说a
将是1或11,那么看起来你已经以这样一种方式设置了,这不会成为一个问题。
你不能用这种方式做你期望的事情。
var a = 1;
var cards = [2, 2, a, a, a];
a = 5;
alert(cards); // This should print 2,2,5,5,5 is what you expect.
// But, it will only print 2,2,1,1,1
您可以存储将其值设置为"a"的所有索引。毕竟,您正在构建阵列,它对您来说应该没有任何障碍。
在我们的情况下,您将有另一个阵列
var aIndexes = [2,3,4];
然后,您可以更改卡片数组的值,如下所示。
if (totalPlayer > 11) {
a = 1;
} else {
a = 11;
}
for(var i =0; i< aIndexes.length; i++){
cards[i] = a;
}
以下行:
var cards = [2, 2, ..., a, a, a];
将a
的值复制到最后三个数组位置。这些值与a
本身没有关系。稍后更改a
对数组没有任何影响。必须手动更新:
if (totalPlayer > 11) {
a = 1;
} else {
a = 11;
}
cards.splice(-3, 3, a, a, a);
var a;
…
var cards = [2, 2, ..., a, a, a];
将创建Array
实例时a
的值设置为数组的元素,而不是某种指向a
的指针。它在这里相当于
var cards = [2, 2, ..., undefined, undefined, undefined];
正如其他人所指出的,您可以直接修改数组,也可以在数组中存储对Object
实例的引用(引用是值)。修改该Object
实例的属性将针对对Object
实例的所有引用对其进行修改。
var a = {
toString: function () { return String(this.valueOf()); },
valueOf: function () { return this.value; }
};
// …
var cards = [2, 2, ..., a, a, a];
function processIt()
{
var playerCard1 = cards[48];
if (totalPlayer > 11)
{
a.value = 1;
}
else
{
a.value = 11;
}
var cpu1 = document.getElementById("cpu1");
cpu1.innerHTML = playerCard1;
}
在字符串或数值表达式上下文中访问a
将产生a
:引用的Object
实例的value
属性的值
/* y + a.valueOf() */
var x = y + a;
/* z + a.toString() */
var y = z + String(a);
你必须决定这两种方法在你的情况下是否有意义,因为我不太了解21点,你的问题相当困惑。
顺便说一句,您忘记声明playerCard1
,这会导致它泄漏到外部执行上下文或导致运行时错误(ES5.x严格模式)。我已经帮你修好了。通常,您希望将全局变量的数量减少到绝对必要的最小值。
- Var工作,但在使用数组执行相同操作时停止
- 从 JSON 制作 javascript var(数组)
- 如何在 JavaScript 中将数组中的 [ ] 替换为 var 结果
- for(数组中的i)和for(var i=0;i<array.length;i++)之间的差异
- 将json数组转换为node.jsexpress.js中的var值
- 剪切数组值并用 var i 填充它
- 将输入文件(多个文件)保存到数组 var js,jquery 中
- 如何在此 var 声明中获取此数组的第一个元素
- JavaScript 神奇地将空 var 插入到新数组中/更改其长度
- 从数组的元素赋值 var
- 如何将 var:var 推送到数组
- Why for var在数组中返回一个字符串索引
- 如何在客户端的nodejs中评估var数组
- Javascript:for(var i<array.length)v.s.for(数组中的e)
- 如何在mongodb中查询id存储在$in的“var-ids”数组中的文档
- 将Multiple Var输入函数,搜索JSON数组,并将Multiple Array Val作为输出接收
- javascript如何将数组中的每个元素传递给不同的var
- 如何将$_SESSION['var']数组传递给jquery并执行ajax
- 如何使用Javascript和Ajax传递一个HTML选择标签到PHP $_POST与一个(数组)var当名称属性是一个
- 将json输出分配给数组var