Any equivalent of Java collections in Javascript? - Stack Overflow

I have to depose words into collections of letters in Javascript. Then I need to be able to i) check wh

I have to depose words into collections of letters in Javascript. Then I need to be able to i) check whether a letter belongs to the collection and ii) to remove letters for this collection progressively.

For example, the word 'cool' would be deposed into 'c', 'o', 'o', 'l'. If I remove 'o', 'a' and 'l', I should be left with 'c', 'o' only.

What is the proper data structure to achieve this in Javascript?

I have to depose words into collections of letters in Javascript. Then I need to be able to i) check whether a letter belongs to the collection and ii) to remove letters for this collection progressively.

For example, the word 'cool' would be deposed into 'c', 'o', 'o', 'l'. If I remove 'o', 'a' and 'l', I should be left with 'c', 'o' only.

What is the proper data structure to achieve this in Javascript?

Share Improve this question asked Feb 5, 2013 at 17:01 Jérôme VerstryngeJérôme Verstrynge 59.7k96 gold badges295 silver badges466 bronze badges 3
  • Take a look at the underscore.string library. – Vlad Magdalin Commented Feb 5, 2013 at 17:03
  • You can choose between arrays and objects, both having their advantages and disadvantages. – Felix Kling Commented Feb 5, 2013 at 17:04
  • Proper? Proper?! It can be done many ways, what's this talk of proper? You have two primitive types, Object (which a bit like a dictionary) and Array, from both of which you can build on more plicated collections. – JayC Commented Feb 5, 2013 at 17:07
Add a ment  | 

3 Answers 3

Reset to default 4

A string!

var str = 'cool';

To check if a character is in the string:

if(str.indexOf('o') > -1) // the character is in the string

To remove the first occurrence of a character:

str = str.replace('o','');

If you want to modify the string object to provide more "logical" representations of these actions you could do this:

String.prototype.contains = function(char){
    return this.indexOf(char) > -1;
};
String.prototype.remove = function(char){
    return this.replace(char,'');
};

which you could use like this:

if ('cheese'.contains('che'))
   alert('Velviva!');

var str = 'hurt'.remove('r');   // 'hut'
    str = 'banana'.remove('n'); // 'baana'
    str = 'happy'.remove('c');  // 'happy'

An array! You can get one by simply splitting the string like this:

var arr = "word".split("");

You can use the methods from Array.prototype to manipulate the collection like you said. For example, to remove the character at index 1:

arr.splice(1,1);

To make it a string again:

arr.join('');

If you just want to read a particular character from a string, you can just access its index directly:

var str = "word";
str[1]; // "o"

There are also other string methods you can use to achieve the same result you'd get with an array (see Shmiddty's answer).

JavaScript's object can be used for that, for instance:

var cool = "cool".split(""); // `cool` is an array of single-char strings
var crossIndex = {};
cool.forEach(function(entry) {
    crossIndex[entry] = true;
});

Now crossIndex has flags for whether it has a given letter, so:

var letter = "c"; // for instance

if (crossIndex[letter]) {
    // It has it

    // If you want to remove it:
    delete crossIndex[leter];
}
else {
    // It doesn't have it
}

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745238504a4618035.html

相关推荐

  • Any equivalent of Java collections in Javascript? - Stack Overflow

    I have to depose words into collections of letters in Javascript. Then I need to be able to i) check wh

    9小时前
    30

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信