使用正则表达式键匹配Javascript,循环访问对象获取值

vet*_*i02 9 javascript jquery json object

var obj = {
 Fname1: "John",
 Lname1: "Smith",
 Age1: "23",
 Fname2: "Jerry",
 Lname2: "Smith",
 Age2: "24"
}
Run Code Online (Sandbox Code Playgroud)

用这样的对象.我可以使用正则表达式获取值,如Fname*,Lname*等关键字,并获取值.

Par*_*kar 16

是的,确定你可以.这是如何做:

for(var key in obj) {
    if(/^Fname/.test(key))
        ... do something with obj[key]
}
Run Code Online (Sandbox Code Playgroud)

这是正则表达式,但对于简单的东西,你可能想要使用indexOf().怎么样?这是如何做:

for(var key in obj) {
    if(key.indexOf('Fname') == 0) // or any other index.
        ... do something with obj[key]
}
Run Code Online (Sandbox Code Playgroud)

如果你想对属性列表做一些事情,我的意思是你想要所有属性的值,你可以使用数组来存储这些属性,使用regex/indexOf匹配它们 - 无论方便 - 并对这些值做些什么......我会把这个任务留给你.


Bla*_*ger 7

您可以通过使用更完整的对象来回避整个问题:

var objarr =  [
            {fname: "John",  lname: "Smith", age: "23"},
            {fname: "jerry", lname: "smith", age: "24"}
          ] ;

objarr[0].fname; // = "John"
objarr[1].age;   // = "24"
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的需要一个对象:

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"
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过改变数组索引轻松地遍历数组,而不是使用正则表达式:

for (var i=0; i<obj.people.length; i++) {
    var fname = obj.people[i].fname;
    // do something with fname
}
Run Code Online (Sandbox Code Playgroud)