循环遍历对象中的多个值

时间:2015-05-14 17:19:26

标签: javascript jquery loops object

我想要做的很简单。我有这个:

var loopTest = {

    Test1: {
                date : ['November 2011', 'a new date']
              },

    Test2: {
                date : 'January 2012'
              }

};

并使用for ... in like:

for(var key in loopTest) {
    $('.content').append('- '+loopTest[key].date+'<br />');
}

我想将Test1.date值显示为单独的元素。目前,他们只是一个字符串。我该怎么做?

这是小提琴:jsFiddle

5 个答案:

答案 0 :(得分:2)

使用$.isArray()来测试loopTest[key].date是否为数组。如果是,请使用一些<br>和连字符连接内部日期。否则,按原样附加字符串。

for(var key in loopTest) {
    if($.isArray(loopTest[key].date)){
        var content = '- ' +  loopTest[key].date.join('<br />- ') + '<br />';
    } else {
        var content = '- ' + loopTest[key].date + '<br />';
    }
    $('.content').append(content);
}

只需使用其中一种许多方式即可。

JSFiddle

答案 1 :(得分:1)

检查日期是否为数组并循环显示:

public class MyFragment1 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_my_fragment1, container, false);

    Button bot = (Button)rootView.findViewById(R.id.button3);
    bot.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View view) {
               Toast.makeText(getActivity(), "button clicked", Toast.LENGTH_LONG);
        }
    });

    return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }


}

答案 2 :(得分:1)

保持简短和甜蜜

for (var key in loopTest) {
    [].concat(loopTest[key].date).forEach(function(date) {
        $('.content').append('- ' + date + '<br />');
    });
}

<强> http://jsfiddle.net/aft37vq8/6/

答案 3 :(得分:1)

for(var key in loopTest) {
    var date = loopTest[key].date;
    date = date.join ? date.join("<br>- ") : date
    $('.content').append('- ' + date + '<br />');
}

答案 4 :(得分:0)

另一种解决方案:)

var store = [];
for (var key in loopTest) {
    if (!loopTest.hasOwnProperty(key)) continue;
    var date = loopTest[key]["date"];
    if (date.constructor === Array) {
        for (var j in date) {
            if (!date.hasOwnProperty(j)) continue;                
            store.push('<p>-', date[j], '</p>');
        }
    } else {
            store.push('<p>-', date, '</p>');
    }
}
$('.content').append(store.join(''));