2017-07-03 5 views
0

に基づいて文字列を返す私はこのようなオブジェクトの配列を持って、オブジェクトの配列内のプロパティのチェックおよび値

let employee = [ 
      { 
       NodeType: "intern", 
       NodeName: "Node1" 
      }, { 
       NodeType: "intern", 
       NodeName: "Node2" 
      }, { 
       NodeType: "full-time", 
       NodeName: "Node1" 
      }, { 
       NodeType: "contract", 
       NodeName: "Node1" 
      } 
] 

私は配列に目を通すことができるよう、すべての従業員かどうかを確認する必要があります私は

  var interntype = employee.find((obj) => { 
       return obj.type == "intern" 
      }); 
     var fulltimetype = employee.find((obj) => { 
       return obj.type == "full-time" 
      }); 
     var contracttype = employee.find((obj) => { 
       return obj.type == "contract" 
      }); 

    if(internType) { 
     return "intern"; 
    } else if (fulltimeType) { 
      return "fullTime" 
    } else return "mixed"; 

を試してみましたが、私の方法があるフルタイムですし、「フルタイム」を返すか、従業員のリストは、「インターン」はインターンを返すか、その混合あれば、

を「混合」を返すの場合このmulをしないでください何回か代わりにそれを一度してください

+1

[ 'reduce']に見て(https://developer.mozilla.org/en-US:それが1以上なら、単一の項目を返さない場合、混合戻ります/ docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)関数を使用します。 –

答えて

3

すべてのNodeType値をセットに挿入し、サイズを確認してください。

const employees = [{"NodeType":"intern","NodeName":"Node1"},{"NodeType":"intern","NodeName":"Node2"},{"NodeType":"full-time","NodeName":"Node1"},{"NodeType":"contract","NodeName":"Node1"}]; 
 

 
const getEmployeesType = (employees) => { 
 
    const types = new Set(employees.map(({ NodeType }) => NodeType)); 
 
    return types.size > 1 ? 'mixed' : [...types][0]; 
 
}; 
 

 
console.log('mixed: ', getEmployeesType(employees)); 
 

 
console.log('internes: ', getEmployeesType(employees.slice(0, 2)));

関連する問題