這在技術上有效,但感覺笨重。有沒有更有效的方法來檢查一個特定的屬性是否返回true,如果是,將其推送到一個數組,然後檢查下一個需要的屬性,依此類推?如果存在財產,將其推送到數組
例如:
let createHero = {
name: "OJ",
trauma1: "abc",
trauma2: "def",
nickname: "spool"
}
let trauma = [];
if (createHero.trauma1){
trauma.push(createHero.trauma1)
}
if (createHero.trauma2){
trauma.push(createHero.trauma2)
}
if (createHero.trauma3){
trauma.push(createHero.trauma3)
}
if (createHero.birthDate){
trauma.push(createHero.birthDate)
}
if (createHero.name){
trauma.push(createHero.name)
}
console.log(trauma) //[ "abc" , "def", "OJ" ]
我建立這一個AngularJs-Express應用程序裏面,所以我不想使用jQuery。
我錯過了什麼?也許正則表達式可以幫忙嗎?
UPDATE
我去主要由@andersVestergaard提供此功能。它允許我爲它提供一個對象和模式,並返回數組中匹配屬性的值。
//filter is a regex pattern
let filterForValues = function(object, filter) {
let key, keys = [];
for (key in object) {
if (object.hasOwnProperty(key) && filter.test(key)) {
keys.push(object[key]);
}
}
return keys;
}
let traumaArray = filterForValues(createHero, /trauma/i);
console.log(traumaArray); //[ "abc" , "def"]
你嘗試過用angular.forEach()? –