キーが X で始まる次のマップからすべてのキーと値のペアを削除するにはどうすればよいですか。
var map = new Object();
map[XKey1] = "Value1";
map[XKey2] = "Value2";
map[YKey3] = "Value3";
map[YKey4] = "Value4";
編集
おそらく ^ を使用して、正規表現を使用する方法はありますか。キーが「X」ではなく「Xke」で始まるmap[^XKe] のようなもの
キーが X で始まる次のマップからすべてのキーと値のペアを削除するにはどうすればよいですか。
var map = new Object();
map[XKey1] = "Value1";
map[XKey2] = "Value2";
map[YKey3] = "Value3";
map[YKey4] = "Value4";
編集
おそらく ^ を使用して、正規表現を使用する方法はありますか。キーが「X」ではなく「Xke」で始まるmap[^XKe] のようなもの
を使用してマップ キーを反復処理できますObject.key
。
Object.keys(map).forEach(function (key) {
if(key.match('^'+letter)) delete obj[key];
});
removeKeyStartsWith
したがって、あなたが言ったように、正規表現を使用した別のバージョンを次に示します。
function removeKeyStartsWith(obj, letter) {
Object.keys(obj).forEach(function (key) {
//if(key[0]==letter) delete obj[key];////without regex
if(key.match('^'+letter)) delete obj[key];//with regex
});
}
var map = new Object();
map['XKey1'] = "Value1";
map['XKey2'] = "Value2";
map['YKey3'] = "Value3";
map['YKey4'] = "Value4";
console.log(map);
removeKeyStartsWith(map, 'X');
console.log(map);
Regex
あなたが言ったように letter=Xke を使用する場合でも、ソリューションはあなたのニーズをカバーしますが、 Regex を使用しない他のソリューションの場合は、次を置き換える必要があります。
Key[0]==letter
とkey.substr(0,3)==letter
元の入力を仮定します:
var map = new Object();
map[XKey1] = "Value1";
map[XKey2] = "Value2";
map[YKey3] = "Value3";
map[YKey4] = "Value4";
そして、pattern
キーをフィルタリングしたいものを含む変数を想定します(例: "X"
、、、...)。"Y"
"prefixSomething"
var clone = {};
$.each(map, function (k, v) {
if (k.indexOf(pattern) == 0) { // k not starting with pattern
clone[k] = v;
}
});
var clone = {};
for (var k in map) {
if (map.hasOwnProperty(k) && (k.indexOf(pattern) == 0)) {
clone[k] = map[k];
}
}
for (var k in map) {
if (map.hasOwnProperty(k) && (k.indexOf(pattern) == 0)) {
delete map[k];
}
}
または、最新のブラウザーでは:
Object.keys(map).forEach(function (k) {
if (k.indexOf(pattern) == 0) {
delete map[k];
}
});
k
キーが次の文字で始まる場合、一致させるために次を使用する代わりに:
k[0] == letter // to match or letter
k
または、キーが次の文字列で始まる場合に一致します。
k.indexOf(pattern) // to match a string
代わりに次の正規表現を使用できます。
new Regexp('^' + pattern).test(k)
// or if the pattern isn't variable, for instance you want
// to match 'X', directly use:
// /^X/.test(k)