array.push() 方法没有向数组添加任何内容并且工作异常

Posted

技术标签:

【中文标题】array.push() 方法没有向数组添加任何内容并且工作异常【英文标题】:array.push() method is not adding anything to array and working weirdly 【发布时间】:2020-05-31 04:31:04 【问题描述】:

我是编程新手,也是 ***。 我的问题与javascript 中的array.push() 方法有关。 先看代码

var buttonColors = ["red", "blue", "green", "yellow"];
var gamePattern = [];
gamePattern = gamePattern.push(nextSequence());

function nextSequence()
        var randomNumber = Math.floor( Math.random() * 4);
        var randomChosenColor = buttonColors[randomNumber];
        return randomChosenColor;

请检查此图片... This is chrome console output

问题在于randomNumber 正在正确生成,randomChosenColor 也正确获取颜色,但它没有被推入gamePattern 数组的行号3。如果有其他方法可以替代此方法,也请帮助我。

【问题讨论】:

push 返回插入的数字,而不是新数组。推送发生在原地。 阅读this article 了解调试代码的技巧。 您发布的代码不会在屏幕截图中创建输出。如果您在调试代码后仍需要帮助,请发帖minimal reproducible example。 【参考方案1】:

Push 改变数组的原始状态。所以你不需要重新初始化数组。

 var buttonColors = ["red", "blue", "green", "yellow"];
    let temp=[];
    temp.push(seq());
    console.log(temp);
    function seq()
        var randomNumber = Math.floor( Math.random() * 4);
        var randomChosenColor = buttonColors[randomNumber];
        return randomChosenColor;
    

【讨论】:

谢谢大哥,解决了我的问题。请告诉我你添加的这个“let”关键字是什么 "let" 关键字用于变量声明,它是块范围的。阅读更多。你可以参考这篇文档developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…【参考方案2】:

push() 改变原始数组(并返回新的长度),因此您无需为gamePattern 分配新值。试试这样的:

var buttonColors = ["red", "blue", "green", "yellow"];
var gamePattern = [];
gamePattern.push(nextSequence());

function nextSequence()
  var randomNumber = Math.floor(Math.random() * 4);
  var randomChosenColor = buttonColors[randomNumber];
  return randomChosenColor;

【讨论】:

以上是关于array.push() 方法没有向数组添加任何内容并且工作异常的主要内容,如果未能解决你的问题,请参考以下文章

小程序实例:用js方法splict()indexOf()push()replace()等操作数组Array的增删改查

JavaScript数组方法对比(深度学习数组)

数组和对象都有哪些原生方法?

php数组怎么添加一个元素

javascript数组属性及方法

数组的方法