連想配列 - javascript 配列 特定の要素




CoffeeScriptで配列から値を削除する (6)

CoffeeScript + jQuery:すべてではなく1つを削除

arrayRemoveItemByValue = (arr,value) ->
  r=$.inArray(value, arr)
  unless r==-1
    arr.splice(r,1)
  # return
  arr

console.log arrayRemoveItemByValue(['2','1','3'],'3')

私は配列を持っています:

array = [..., "Hello", "World", "Again", ...]

「World」が配列内にあるかどうかを確認するにはどうすればよいですか? それがあれば削除しますか? そして "世界"への言及を持っていますか?

場合によっては、ある単語を正規表現とマッチさせたい場合、正確な文字列がわからないので、一致するStringへの参照が必要になることがあります。 しかし、この場合、私はそれがより簡単になる「世界」だと確信しています。

提案していただきありがとうございます。 私はそれを行うためのクールな方法を見つけた:

http://documentcloud.github.com/underscore


「World」が配列されているかどうかを確認する:

"World" in array

存在する場合は削除する

array = (x for x in array when x != 'World')

または

array = array.filter (e) -> e != 'World'

参照を保持する(これは私が見つけた最も短いものです。!.pushは.push> 0なので常にfalseです)

refs = []
array = array.filter (e) -> e != 'World' || !refs.push e


filter()もオプションです:

arr = [..., "Hello", "World", "Again", ...]

newArr = arr.filter (word) -> word isnt "World"

このような自然なニーズのために、私はしばしばremove(args...)メソッドを使って配列をプロトタイプします。

私の提案はこれをどこかに書くことです:

Array.prototype.remove = (args...) ->
  output = []
  for arg in args
    index = @indexOf arg
    output.push @splice(index, 1) if index isnt -1
  output = output[0] if args.length is 1
  output

そして、どこでもこのように使う:

array = [..., "Hello", "World", "Again", ...]
ref = array.remove("World")
alert array # [..., "Hello", "Again",  ...]
alert ref   # "World"

この方法で複数のアイテムを同時に削除することもできます:

array = [..., "Hello", "World", "Again", ...]
ref = array.remove("Hello", "Again")
alert array # [..., "World",  ...]
alert ref   # ["Hello", "Again"]

これを試して :

filter = ["a", "b", "c", "d", "e", "f", "g"]

#Remove "b" and "d" from the array in one go
filter.splice(index, 1) for index, value of filter when value in ["b", "d"]






coffeescript