2016-11-21 6 views
0

コアの問題: あるオブジェクトがあります。オブジェクトの要素があります。私はオブジェクトの他の要素がこの特定の要素を期待していることを確認したい。たとえば、オブジェクトがあります:関数内のオブジェクト要素を削除する

object = { 
    example1: "text1", 
    example2: "text2" 
} 

私がチェックすることができ、他の要素があるどのようにexample1を期待しますか?

私のソリューション: 私はパラメータとしてオブジェクトを取得する関数を持っています。オブジェクトは定数です。

function checkObjectOfElements(object, element) 
{ 
    var filters = object; 
    delete filters[element]; 
    if (filters["test1"] != undefined || 
     filters["test2"] != undefined || 
     filters["test3"] != undefined || 
     filters["test4"] != undefined) { 
     return true; 
    } else { 
     return false; 
    } 
} 

最初のパラメータはオブジェクトの2番目の要素です。削除したい要素が2番目です。

問題: 基本的に私はちょうどチェックし、この要素を削除したくないが、他の要素があり、オブジェクトでこれらを期待するが、私は要素の削除を呼び出す場合は、そのだけではなく、関数内の削除グローバルに削除されます。私はそれがポインタとして取得していると思うが、私はポインタとしてではなく、パラメータを取得するための他のソリューションが見つかりませんでした。

+0

オブジェクトのコピー/クローンを作成して操作してください。 – Rayon

答えて

0

非常に簡単。名前がないキーが存在するか確認してくださいelement

function checkObjectOfElements(obj, element) { 
    return Object.keys(obj).some(name => name !== element) 
} 
0

あなたはこのようなオブジェクトのサイズチェックすることができます。

Object.keys(object).length 

をそして、あなたが条件書き込むことができます。これに関する情報で

element in object 

を、あなたのオブジェクトは、指定されただけで、これを含んで天気を決めることができます要素かどうか。

0

私は正しいことを理解していますか?オブジェクトに具体的な単一のプロパティしか持たないことを知る必要がありますか?

これは役に立ちますか?

function checkPropSingle(obj, prop) { 
 
    for(var key in obj) { 
 
    if(key !== prop) { 
 
     return false; 
 
    } 
 
    } 
 
    
 
    return true; 
 
} 
 

 
var obj1 = {a:1, b:2, c:3}, 
 
    obj2 = {a:1, b:2}, 
 
    obj3 = {a:1}; 
 

 
console.log(checkPropSingle(obj1, 'a')); 
 
console.log(checkPropSingle(obj2, 'a')); 
 
console.log(checkPropSingle(obj3, 'a'));

関連する問題