从其键与javascript和下划线的特定条件匹配的对象返回键值对
我想返回一个具有键值对的对象,其键值以“M”或“F”开头。最后一个物体看起来像从其键与javascript和下划线的特定条件匹配的对象返回键值对,javascript,map,filter,underscore.js,Javascript,Map,Filter,Underscore.js,我想返回一个具有键值对的对象,其键值以“M”或“F”开头。最后一个物体看起来像 var obj = { "M_18-24":413109, "F_18-24":366159, "F_25-34":265007, "U_25-34":1214, "U_35-44":732 } 我已经尝试过像j.filter(obj,function(v,k){return/^[MF]/.test(k)})这样的东西。你可以试试 var obj = { "M_18-24":413109, "F_18-24":3
var obj = {
"M_18-24":413109,
"F_18-24":366159,
"F_25-34":265007,
"U_25-34":1214,
"U_35-44":732
}
我已经尝试过像j.filter(obj,function(v,k){return/^[MF]/.test(k)})这样的东西。你可以试试
var obj = {
"M_18-24":413109,
"F_18-24":366159,
"F_25-34":265007
}
它将为您提供相应的属性,然后您可以添加如下逻辑
for (var prop in obj) { console.log(prop) }
你可以试试
var obj = {
"M_18-24":413109,
"F_18-24":366159,
"F_25-34":265007
}
它将为您提供相应的属性,然后您可以添加如下逻辑
for (var prop in obj) { console.log(prop) }
这将实现以下目的:
if(prop.indexOf('M'))
请参见此处的控制台输出(F12+->请参见控制台):这将实现以下功能:
if(prop.indexOf('M'))
请参见此处的控制台输出(F12+->请参见控制台):这应该可以:
function filte_obj_FM (inp)
{
var ret = {};
for ( var k in inp)
{
if ( k[0] == "M" || k[0] == "F" )
{
ret[k] = inp[k];
}
}
return ret;
}
这应该起作用:
function filte_obj_FM (inp)
{
var ret = {};
for ( var k in inp)
{
if ( k[0] == "M" || k[0] == "F" )
{
ret[k] = inp[k];
}
}
return ret;
}
以下是我的解决方案:
var obj = {
"M_18-24":413109,
"F_18-24":366159,
"F_25-34":265007,
"U_25-34":1214,
"U_35-44":732
}
var filtered = {}
for(var key in obj) {
if(key[0] === "M" || key[0] === "F"){
filtered[key] = obj[key]
}
}
我认为你们都很好,我投票支持了他们。谢谢 以下是我的解决方案:
var obj = {
"M_18-24":413109,
"F_18-24":366159,
"F_25-34":265007,
"U_25-34":1214,
"U_35-44":732
}
var filtered = {}
for(var key in obj) {
if(key[0] === "M" || key[0] === "F"){
filtered[key] = obj[key]
}
}
我认为你们都很好,我投票支持了他们。谢谢 这次使用的另一个版本是reduce: //创建一个新的下划线函数,该函数将从传递给定谓词的对象返回属性
_.filter(_.keys(obj), function(key) {
return key.match(/U/);
}).forEach(function(kv) {
delete obj[kv];
});
//调用新函数时可以使用的两个谓词
_.mixin({ filterProperties: function(obj, predicate){
return _.reduce(obj, function(memo, value, key){
if( predicate(key) ){
memo[key] = value;
}
return memo;
}, {});
}});
//最后得到我们想要的数据:
function isMale(key){
return key[0] == 'M';
}
function isFemale(key){
return key[0] == 'F';
}
这次使用的另一个版本是reduce: //创建一个新的下划线函数,该函数将从传递给定谓词的对象返回属性
_.filter(_.keys(obj), function(key) {
return key.match(/U/);
}).forEach(function(kv) {
delete obj[kv];
});
//调用新函数时可以使用的两个谓词
_.mixin({ filterProperties: function(obj, predicate){
return _.reduce(obj, function(memo, value, key){
if( predicate(key) ){
memo[key] = value;
}
return memo;
}, {});
}});
//最后得到我们想要的数据:
function isMale(key){
return key[0] == 'M';
}
function isFemale(key){
return key[0] == 'F';
}
我想你的意思是
prop.indexOf('M')
。我想你的意思是prop.indexOf('M')
。注意:这将需要-这是一个非常整洁的JS添加。注意:这将需要-这是一个非常整洁的JS添加。