【问题标题】:javascript: adding strings into an object through a class methodjavascript:通过类方法将字符串添加到对象中
【发布时间】:2017-02-24 23:16:36
【问题描述】:

我正在尝试使用几种方法创建一个 javascript 类,这些方法可以让我添加视图和删除。我坚持使用 add 方法,它应该返回传递给 add 方法的每个字符串的唯一 ID,但是当我完成添加字符串时,我不知道如何跳转到下一个代码块。以下是我当前的一些代码:

var obj = {};
var arr = [];

var Words = function(){  
  this.add = function(newWord){
    if(newWord !== false){
      arr.push(newWord); 
    } else {
      for (var i = 0; i < arr.length; i++){        
        obj[i] = arr[i];      
        return obj[i];
      }           
    }

var words = new Words();
words.add('first');
words.add('second');
words.add('third');

我觉得我应该创建一个 next() 函数,该函数在我推送完最后一个传递的字符串后运行,但我似乎忘记了一切。

【问题讨论】:

  • 我看不懂你的代码,newWord 是一个字符串。怎么可能是真假,不是布尔值。
  • 你说得对,我在想一些快速的方法来确定this.add 何时完成,因此代码可以继续到下一个块并为每个添加的字符串分配唯一的 ID。跨度>
  • 从您的问题描述来看,您想要达到的目标并不明显。试着更好地解释你的目标,也许也给它一些背景。

标签: javascript class object methods hash


【解决方案1】:

虽然我真的不知道您要完成什么,但您的代码存在一些问题...

一个对象有键和值。每个键都有一个值。

例如。 mykey: "corresponding value"

for (var i = 0; i < arr.length; i++){        
    obj[i] = arr[i];
    return obj[i];
}

当 i 是整数时,您正在设置 obj[i],因此除非您的键是整数(可能不是),否则您需要指定键。

否则,为你正在做的事情使用另一个数组(如果可能的话)。

如果您实际上是用数字键填充此对象,则忽略上述内容。

我还建议您使用 callbacks 来了解 .add() 何时完成(或者只是在运行 .add() 后运行您的代码??)。


为什么不直接创建一个数组,根据需要设置它的值,然后根据迭代检索它们?

var array = [];

//add
array.push("first");

//view value
console.log(array[0]); // output: "first"

//view index
array.indexOf("first"); // output 0

//delete
array.splice(0, 1);

如果你愿意,可以把它包装成一个类:

var array = [];
var Words = function() {
  this.add = function(input) {
    array.push(input);
  }
  this.view = function(input) {
    return array[input];
  }
  this.delete = function(input) {
    array.splice(input, 1);
  }
}

希望这会有所帮助。

【讨论】:

  • 我使用哈希的原因是因为这个不稳定的要求...The add method takes a string as a message and returns a unique id for that message. 然后查看要求是The view method takes no parameters and returns a hash containing the unique message id assigned in the add method and the message itself.
猜你喜欢
  • 2012-01-13
  • 2013-05-24
  • 2015-09-10
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多