我正在使用点表示法编写一个访问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')
答案 0 :(得分:0)
您可以使用效果正常的lodash.get
(documentation)。
<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>