2017-01-27 48 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);