簡體   English   中英

使用正則表達式鍵匹配Javascript,循環訪問對象獲取值

[英]Loop through object get value using regex key matches Javascript

var obj = {
 Fname1: "John",
 Lname1: "Smith",
 Age1: "23",
 Fname2: "Jerry",
 Lname2: "Smith",
 Age2: "24"
}

用這樣的對象。我可以使用正則表達式獲取值,如Fname *,Lname *等關鍵字,並獲取值。

是的,確定你可以。 這是如何做:

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匹配它們 - 無論方便 - 並對這些值做些什么......我會把這個任務留給你。

您可以通過使用更完整的對象來回避整個問題:

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
}
values = []
for(name in obj) {
   if (obj.hasOwnProperty(name) && name.test(/Fname|Lname/i) values[name] = obj[name];
}

使用jquery:

$.each(obj, function (index,value) {
    //DO SOMETHING HERE WITH VARIABLES INDEX AND VALUE
});

快速鍵匹配使用包括()

我喜歡新的包含功能。 您可以使用它來檢查密鑰是否存在或返回其值。

 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM