使用递归来重构

时间:2017-04-10 12:20:27

标签: javascript json recursion functional-programming

我正在使用点表示法编写一个访问JSON(在localStorage中)的函数。下面的get()函数有效,但是详细(且有限)

我确信通过递归可以更好地重构这一点。有什么想法吗?

get(str) {

  var keys = str.split('.')
  var parent = JSON.parse({"first":{"second":{"third":{"something":"here"}}}})

  if ( keys.length === 1 ) return parent
  if ( keys.length === 2 ) return parent[keys[1]]
  if ( keys.length === 3 ) return parent[keys[1]][keys[2]]
  if ( keys.length === 4 ) return parent[keys[1]][keys[2]][keys[3]]

}

get('first')
get('first.second')
get('first.second.third')

1 个答案:

答案 0 :(得分:0)

您可以使用效果正常的lodash.getdocumentation)。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.hackerinside.jaisonjoseph.polysocial.tab2">


<FrameLayout
    android:id="@+id/frame1"
    android:layout_width="match_parent"
    android:layout_height="3dp"
    android:background="@android:color/transparent">


    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="3dp"
        android:background="@android:color/transparent"
        android:foregroundGravity="top"
        android:progressDrawable="@drawable/custom_progress"
        android:progress="20"/>

</FrameLayout>


<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swiperefresh1"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.hackerinside.jaisonjoseph.polysocial.EulaWebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webview"
        android:focusable="true"
        android:focusableInTouchMode="true" />

</android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>