我有对象,这个对象也包含对象。它看起来像:
$scope.data = {
tree : {
name : 'oak',
old : 54
},
dog : {
name : 'Lucky',
old : 3
},
system1 : {
name : '',
old : ''
},
baby : {
name : 'Jack',
old : 1
},
cat : {
name : 'Fluffy',
old : 2
},
system2 : {
name : '-',
old : '-'
}
}
正如你所看到的,这个对象的名称有 - 树,狗,系统等。我想只使用名称系统的对象,但这个名称可以像system1,system123,system8一样改变。所以我尝试使用这个reg exp来忽略数字
replace(/\d+/g, '')
但我无法达到此对象名称。我试试这个:
angular.forEach($scope.data, function(item){conole.log(item)}) // but it shows content in obj not obj name..
如何获得此obj名称并区分这2个系统对象?
答案 0 :(得分:4)
var data = {
tree : {
name : 'oak',
old : 54
},
dog : {
name : 'Lucky',
old : 3
},
system1 : {
name : '',
old : ''
},
baby : {
name : 'Jack',
old : 1
},
cat : {
name : 'Fluffy',
old : 2
},
system2 : {
name : '-',
old : '-'
}
}
data = Object.keys(data) // get keys
.filter(key => key.startsWith('system')) // filter keys starting with system
.map(key => data[key]) // map to the values, returning a new array
console.log(data) // and you have you array with systems

答案 1 :(得分:2)
将另一个参数传递给key
之类的函数到forEach
callBack函数。它是用例中对象内部每个对象的关键。
检查以下示例
var items = {
car: {
a: 123
},
dog: {
b: 234
},
system: {
c: 456
}
};
angular.forEach(items, function(item, key) {
console.log(key);
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
&#13;
答案 2 :(得分:0)
你可以使用Object.keys(myObject)
来返回传递对象的所有键的数组,用于istance:
var myObject= {
cat : {
name : 'Fluffy',
old : 2
},
system2 : {
name : '-',
old : '-'
}
}
var keys = Object.keys(myObject); // Keys will be ['cat', 'system2']
干杯
答案 3 :(得分:0)
你必须将另一个参数传递给angular foreach函数以获取对象的键名,如下所示: -
angular.forEach($scope.data, function(item, key){ // Here key is the keyname of the object
console.log(item, key);
});