2013-07-22 72 views

回答

1

我需要的字段...

你的意思是你需要找钥匙吗?如果是这样的:

var d_keys = Object.keys(obj).filter(function (key) { 
    return !key.indexOf("d_"); 
}); 

如果你真的想要的值:

var d_values = Object.keys(obj).filter(function (key) { 
    return !key.indexOf("d_"); 
}).map(function (key) { 
    return obj[key]; 
}); 

注意,这里使用的各种ES5方法(Object.keysArray.prototype.filterArray.prototype.map),所以根据您的环境,您可能需要适当的垫片。

这里是两个片段的working examples

1

可以遍历对象的键,然后比较关键名称的开头:

var myObj = { 
    d_name: { field_name: true }, 
    d_date: { field_date: ISODate() }, 
    status: 'success' 
}; 
var outArray = {}; 
for(var key in myObj) { 
    if(key.length >= 2 && key.substr(0,2) == "d_") { 
    outArray[key] = myObj[key]; 
    } 
} 
1

Here是小提琴希望它可以帮助你

var q = []; 
for(k in s) 
{ 
if(k.indexOf("d_") == 0){ 
q.push(s[k]); 
} 
+0

'String.prototype.startsWith'是ES6建议的一部分。它在许多环境中都不可用。在Chrome Canary中,你的小提琴会抛出一个'TypeError'。 –

+0

是的,你说得对,我现在用indexOf来纠正它 –

相关问题