これは技術的には機能しますが、鈍い感じです。特定のプロパティが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で試してみましたか? –