javascript - 如何计算一个项目在数组中的次数

标签 javascript arrays algorithm search

我决定从头开始再试一次,因为我现在清醒了一点,并逐步构建它。我看过一些答案,似乎有很多方法可以解决这个问题。我正在尝试使用到目前为止所学的知识来做到这一点。我了解了变量、基本函数、对象、数组、“this”和 push 方法。我知道 for、while、do while、for in 循环,尽管我最了解 for 循环。

这是我构建它的新方法,我知道它不必要地长,但我希望能够基本了解如何以非常简单的方式将我学到的不同东西拼凑在一起。这更多是关于学习如何构建简单程序。然后我会继续对程序进行微调,使其更加简洁和巧妙。如果你能看一看并告诉我我将如何处理我目前所拥有的...

这是代码,理想情况下,当有新的“访客”询问他们的姓名和电话号码时,我想运行一个函数。然后使用给定的名称和编号创建一个新的“客户”对象,并将其推送到“访问者”数组。一旦我成功地弄清楚了这一点,我就会使用循环来检查数组是否是新访客,并在他们每次来时更新他们的访问次数。

//array that will contain 'Customer' objects
var visitors = [john];

//Customer object
function Customer(name, phonenumber){
  this.name = name;
  this.phonenumber = phonenumber;
//will eventually add a "visits" method logging number of visits

}

var john = new Customer("john smith", "333");

//visitor funtion that runs everytime there is a new visitor
var visitor = function(){

  //visitor does not have a set name or number yet
  var userNumber = "variable userNumber is currently equal to " + 0;
  var userName = "variable userName is currently set to " + undefined;
  console.log(userName, userNumber);

  //ask for visitor name and number
  var askNumber = prompt("type your number");
  var askName = prompt("what is your name?");

  //store user name and number in two variables
  var userNumber = "variable 'userNumber' is now equal to " + askNumber; 
  var userName = "variable userName is now set to " + askName;

  //print out the new variables 
  console.log(userNumber);
  console.log(userName);

  //print who the phone number belongs to, this lets me see that the above code worked correctly
  var userNumber = askNumber;
  var userName = askName;
  console.log("Phone number " + userNumber + " belongs to " + userName);

  //make new customer object with the given name and number
  var userNumber = new Customer();
  userNumber.name = askName;
  userNumber.phonenumber = askNumber;

  console.log("properties of " + userNumber);  

};

最后一位返回“[object, object] 的属性”为什么?

最佳答案

你不仅把自己弄糊涂了,还把浏览器弄坏了! :-)

(for 循环永远不会终止,因为您在每次迭代时都会将新值推送到列表。)

我可以更详细地告诉您代码有什么问题,但是如果您自己追查代码,您会学到更多。因此,您现在需要的是学习调试的艺术。

test() 函数的开头添加一个 debugger 语句:

var list = ["111", "222", "333", "444", "555", "666"];

var test = function(input){
    debugger;
    var info = prompt("hi " + input + " what is your name?");
    for(i=0; i< list.length; i++){
        if( info === list.length[i]){
            console.log(list[i]);
        }
        else{
            list.push(info);
        }
        console.log(list);
    }

}

现在运行 test() 它将在调试器中停止在该语句处。查看调试器中的不同面板 - 您可以查看变量和其他内容。找到它具有控件的位置,让您逐步执行代码。单步执行代码并在执行过程中查看变量。您很快就会发现问题所在。在大多数浏览器中,还有键盘快捷键,可让您更轻松地逐步执行代码。

如果您使用 Chrome,这里是一个 introduction to the Chrome DevTools .其他浏览器也有类似的教程。

关于javascript - 如何计算一个项目在数组中的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30092446/

相关文章:

javascript - 如何在一个请求中发布 FormData 对象和附加对象?

javascript - javaScript 中的警报函数

c# - 如何在没有 C# 类的情况下查找子列表的索引

c++ - C++ 中的 lower_bound()

javascript - Codemirror的Onload功能

javascript - IE6 Unit PNG 修复 + Javascript Swap Image 不工作

javascript - 算法练习、对象操作

java - 在二维数组上实现 A Star 算法

algorithm - map 和动态规划更新

algorithm - 求立方体中射线的长度