var obj = {
Fname1: "John",
Lname1: "Smith",
Age1: "23",
Fname2: "Jerry",
Lname2: "Smith",
Age2: "24"
}
使用像这样的对象。我可以使用正则表达式在Fname *,Lname *之类的键上获取值,并获取值。
答案 0 :(得分:16)
是的,确定你可以。方法如下:
for(var key in obj) {
if(/^Fname/.test(key))
... do something with obj[key]
}
这是正则表达式,但对于简单的东西,您可能想要使用indexOf()
。怎么样?方法如下:
for(var key in obj) {
if(key.indexOf('Fname') == 0) // or any other index.
... do something with obj[key]
}
如果您想对属性列表执行某些操作,我的意思是您需要所有属性的值,您可以使用数组来存储这些属性,使用regex / indexOf匹配它们 - 无论方便 - 并执行某些操作有了这些价值......我会把这个任务留给你。
答案 1 :(得分:7)
您可以使用更完整的对象来回避整个问题:
var objarr = [
{fname: "John", lname: "Smith", age: "23"},
{fname: "jerry", lname: "smith", age: "24"}
] ;
objarr[0].fname; // = "John"
objarr[1].age; // = "24"
或者,如果你真的需要一个物体:
var obj = { people: [
{fname: "John", lname: "Smith", age: "23"},
{fname: "jerry", lname: "smith", age: "24"}
]} ;
obj.people[0].fname; // = "John"
obj.people[1].age; // = "24"
现在,您可以通过改变数组索引轻松遍历数组,而不是使用正则表达式:
for (var i=0; i<obj.people.length; i++) {
var fname = obj.people[i].fname;
// do something with fname
}
答案 2 :(得分:0)
values = []
for(name in obj) {
if (obj.hasOwnProperty(name) && name.test(/Fname|Lname/i) values[name] = obj[name];
}
答案 3 :(得分:0)
使用jquery:
$.each(obj, function (index,value) {
//DO SOMETHING HERE WITH VARIABLES INDEX AND VALUE
});
答案 4 :(得分:0)
我喜欢新的includes功能。 您可以使用它来检查密钥是否存在或返回其值。
var obj = {
Fname1: "John",
Lname1: "Smith",
Age1: "23",
Fname2: "Jerry",
Lname2: "Smith",
Age2: "24"
};
var keyMatch = function (object, str) {
for (var key in object) {
if (key.includes(str)) {
return key;
}
}
return false;
};
var valMatch = function (object, str) {
for (var key in object) {
if (key.includes(str)) {
return object[key];
}
}
return false;
};
// usage
console.log(keyMatch(obj, 'Fn')) // test exists returns key => "Fname1"
console.log(valMatch(obj, 'Fn')) // return value => "John"
如果您还没有进行ES2015编译,可以使用
~key.indexOf(str)