![](/img/trans.png)
[英]Loop through string get key and value using regex key matches 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.