0

今日はかなり簡単な質問です。

次のようなオブジェクトがあります。

var buttonLogos = { 
adcraft: [".","..","1.png","2.png","3.png"],
ferries: [".","..","1.png","2.png"]
}

そして、ドットで始まるエントリをすばやく削除する方法を探しています。通常、ドットで何かを除外するだけですが、必要な文字列に .png が含まれているため、できません

最初の 2 つのエントリは常に "." であるため、除外することが解決策になる場合があります。と「..」しかし、残念ながら、それを行う方法さえわかりません。

(jQuery が推奨されます)

私はいくつかの助けが大好きです!ありがとう。

4

4 に答える 4

1
for(i in buttonLogos){
    buttonLogos[i] = buttonLogos[i].filter(function(i){
        return !i.match(/^\.{1,2}$/);
    });
}
于 2013-11-09T19:54:10.960 に答える
0

他の回答で言及されているフィルター、または indexOf と splice の組み合わせも機能します。

   var adcraft = [".","..","1.png","2.png","3.png"];
    var elems_to_rm = [];
    for (var i = 0; i < adcraft.length; i++) {
        if (adcraft[i].indexOf('.') === 0) {
            elems_to_rm.push(adcraft[i]); 
        }
    }

    for (var i = 0; i < elems_to_rm.length; i++) {
        var index = adcraft.indexOf(elems_to_rm[i]);
        adcraft.splice(index, 1);
    }
于 2013-11-09T19:57:11.997 に答える
0

次のようにjs正規表現を使用できます。

buttonLogos.adcraft = $(buttonLogos.adcraft).filter(function(i,val){return val.match(/[^\.]/);});
于 2013-11-09T19:54:18.683 に答える
0

手動で試してください。2 つの引数 (削除する最初の項目の位置と削除する項目の数) を指定するだけで、任意の数の項目を配列から削除できます。たとえば、splice(0, 2) は最初の 2 つの項目を削除します。

于 2013-11-09T20:42:07.257 に答える