0

MongoDB 風のセレクター「top.middle.bottom」に基づいて、プロパティのツリーを持つオブジェクトを再帰的に構築しようとしています。underscorejs ヘルパーもいくつかあります。

function setNestedPropertyValue(obj, fields, val) {
  if (fields.indexOf(".") === -1) { 
    // On last property, set the value
    obj[fields] = val; 
    return obj; // Recurse back up
  } else {
    var oneLevelLess = _.first(fields.split("."));
    var remainingLevels = _.rest(fields.split(".")).join(".");
    // There are more property levels remaining, set a sub with a recursive call
    obj[oneLevelLess] = setNestedPropertyValue( {}, remainingLevels, val);
  }
}

setNestedPropertyValue({}, "grandpaprop.papaprop.babyprop", 1);

希望:

{ 
  grandpaprop: {
    papaprop: {
      babyprop: 1
    }
  }
}

結果:

undefined

ヘルプとヒントをいただければ幸いです。

4

3 に答える 3

0

else質問でジャックが述べたように、ステートメントの最後の行でオブジェクトを返していませんでした。これを追加することで、動作するようになりました:

 obj[oneLevelLess] = setNestedPropertyValue( {}, remainingLevels, val);
   return obj; // Add this line
 }
于 2013-05-03T09:05:39.643 に答える