假设我有一个像这样的数组,它将被添加到ul中,如下所示
File file = new File(getClass().getClassLoader().getResource(fileName).getFile());
上面发生的事情没有data['productDetailOptions'] = ['red', 'blue', 'big', 'small', 'medium'];
$('.cart-productDetailOptions ul').append(data['productDetailOptions']);
标签我知道我肯定可以使用for循环遍历每个数组并添加标签然后将它们分配到一个新变量中。
我想知道是否有更容易和更短的方式,所以我不必使用循环?
编辑:我的坏,我应该说除了使用for循环之外的任何其他方式。对不起有误解答案 0 :(得分:4)
可以使用join()而无需编写自己的循环来生成可附加的html字符串
var html = '<li>' + data['productDetailOptions'].join('</li><li>') + '</li>';
$('.cart-productDetailOptions ul').append(html);
答案 1 :(得分:1)
尽可能少地致电<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/activity_horizontal_margin">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:text="Name ......"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp"
android:textStyle="bold" />
<Button
android:id="@+id/nameButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Name" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:text="Description"
android:textColor="@color/colorAccent" />
<Button
android:id="@+id/descriptionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Description" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/release_at"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Release at"
android:textColor="#5d5d5d"
android:textStyle="bold" />
<Button
android:id="@+id/releaseButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Release" />
</LinearLayout>
以确保DOM不会进行不必要的更改非常重要。所以,你需要建立一个字符串,然后像这样注入一次:
.append()
答案 2 :(得分:0)
每个数组都有.map
方法,所以对我来说最有效的方法是这样的:
$('.cart-productDetailOptions ul').append(data['productDetailOptions'].map( item => "<li>"+item+"</li>" ) );
注意:我正在使用ES6箭头功能。哪个有它的等价物:
$('.cart-productDetailOptions ul')
.append( data['productDetailOptions'].map( function(item) {
return "<li>"+item+"</li>"
} ) );
注2:感谢@Dora的评论。实际上$(..).append
accepts both Array and string,所以.join
是不必要的。
答案 3 :(得分:0)
如果你没有在其他地方使用data['productDetailOptions']
,你可以直接在数组中写<li>your content</li>
。
像
data['productDetailOptions'] = ['<li>red</li>', '<li>blue</li>' /* ... */ ];
答案 4 :(得分:0)
您也可以使用Array.reduce
。
$('.cart-productDetailOptions ul')
.append( data['productDetailOptions'].reduce( function(result, item) {
return result + "<li>" + item + "</li>"
}, "" ) );
对我而言,它具有更好的可读性,.reduce
非常good support