2017-01-27 75 views
1

我得到動態對象是這樣的:從基於屬性模式的對象獲取值?

var myObject = {name: 'A', attribute13: x, attribute112: y, attribute4789: z}; 

我唯一知道的是,所有的「屬性」屬性帶有前綴「屬性」開始 - 每個屬性後面添加數字是未知的,以及總數的與對象關聯的屬性。

如何獲取'屬性'的所有值? (在這種情況下,例如x,y和z)。

+1

使用用於(在myObject的變種丙){的console.log(myObject的[丙])},用對象 –

回答

1

你可以用正則表達式,它匹配attribute檢查在字符串的開頭。

var myObject = { name: 'A', attribute13: 'x', attribute112: 'y', attribute4789: 'z' }; 
 

 
Object.keys(myObject).forEach(function (key) { 
 
    if (key.match(/^attribute/)) { 
 
     console.log(myObject[key]); 
 
    } 
 
});

3

您可以通過Object.keys獲取對象的所有屬性,例如,

Object.keys(myObject).filter(s => s.startsWith('attribute')) 

爲了獲得性能與「屬性」,你可以使用下面的代碼片段開頭的所有值:

Object.keys(myObject).filter(s => s.startsWith('attribute')).map(x => myObject[x]) 
+2

的屬性迭代需要小心用'startsWith '和瀏覽器支持例如沒有IE瀏覽器,本地手機目前很差https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith –

0

篩選。 Object.values(object_name)使

var myObject = {name: 'A', attribute13: 'x', attribute112: 'y', attribute4789: 'z'}; 
 

 
var values = Object.values(myObject); 
 
console.log(values);

0

您可以使用for...in循環迭代的屬性該對象的值的數組:

for (var prop in myObject) { 
    if (/^attribute/.test(prop)) { 
     // Do something 
    } 
} 
0

在循環可能的幫助。

遍歷針對所需regex對象測試的鍵,

例片段。

var myObject = { 
 
    name: 'A', 
 
    attribute13: 'x', 
 
    attribute112: 'y', 
 
    attribute4789: 'z' 
 
}; 
 

 
for (var key in myObject) { 
 
    if (/^(attribute)/g.test(key)) { 
 
    console.log(myObject[key]) 
 
    } 
 
}

0
var myObject = {name: 'A', attribute13: x, attribute112: y, attribute4789: z}; 
var a = []; 
for (var property in myObject) { 
if (myObject.hasOwnProperty(property)) { 
    var exclude = "attribute" 
    var str = property; 
    var res = str.substring(exclude.length); 
    a.push(res); 
} 
} 
console.log(a);