ID から名前へのマッピングを含む、以下に示すような json オブジェクトがあります。
idToNamesMap = {"1":"name5","2":"name6","3":"name7","4":"name8"}
次に、この ID から名前へのマッピング オブジェクトで名前を検索します。たとえば、文字列「name」で始まるすべての名前を、対応する ID とともに検索して返します。これを行う方法を提案できますか?
jQuery1.7を使用しています。
ID から名前へのマッピングを含む、以下に示すような json オブジェクトがあります。
idToNamesMap = {"1":"name5","2":"name6","3":"name7","4":"name8"}
次に、この ID から名前へのマッピング オブジェクトで名前を検索します。たとえば、文字列「name」で始まるすべての名前を、対応する ID とともに検索して返します。これを行う方法を提案できますか?
jQuery1.7を使用しています。
あなたが正しく理解している場合は、アイテムをフィルター処理してから"name"
、オブジェクトのキー/値を反転します。
var idToNamesMap = {"1":"name5","2":"name6","3":"name7","4":"name8"},
searchPattern = /^name/;
function searchMap(map, pattern)
{
var res = {};
$.each(map, function(i, name) {
if (pattern.test(name)) {
res[name] = i;
}
});
return res;
}
console.log(searchMap(idToNamesMap, searchPattern));
出力:
{"name5": "1", "name6": "2", "name7": "3", "name8": "4"}
以下も参照してください。jQuery.each()
たぶん、このように。正規表現を使用してエントリを検索する方法を提供します。
var idToNamesMap = {"1":"name5","2":"name6","3":"name7","4":"name8"};
idToNamesMap.search = function( pattern ) {
var result = {};
for ( var k in this ) {
if ( 'function' != typeof this[ k ] ) {
if ( this[ k ].test( pattern ) ) {
result[ k ] = this[ k ];
}
}
}
return result;
}
console.log( idToNamesMap.search( /^name/ ) );
ここで試してみてください: http://jsfiddle.net/XaWqd/1/
var newObject = {};
for (key in idToNamesMap) {
if (idToNamesMap[key].substring(0,4)=='name')
newObject[idToNamesMap[key]] = key;
}
次のようなことを試してください:
$(document).ready(function(){
var jarr = {'a':'one', 'b':'two', 'c':'3'}
$.each(jarr, function(key, value){
if((/^one/).test(value)){
alert(key + ' -> ' + value);
}
});
});
ここに作業中のJSFiddleがあります
これを実現するために使用できるオプションは 3 つあります。
単純な正規表現を使用します (上記のように):
var match = /^name/.test(myString);
使用indexOf
方法:
var match = string.length => 7 && string.indexOf("name") == 0;
substring
次の方法を使用します。
var match = string.length => 7 && string.substr(0, 4) == "name";