代码改变世界

数组操作时避免空值出现

2011-10-17 20:44  dreamhappy  阅读(1869)  评论(0编辑  收藏  举报
/*
  移除列表中的条目
  @ metaids id,id,的形式 
*/
function removeBook(ids) {
        var idarray =ids.split(',');
		for (var i = 0; i < idarray.length; i++) {
            $("#" + idarray[i]).remove();
        }
}

按照上边的代码当传入 id,id,形式的参数,以','结尾时,截取数组会多一个空值。

导致metaidarray[idarray.length]是一个undefined值,后续会产生js错误。解决办法就是

循环数组是加一个判断

if(metaidarray[i]==undefined){continue}

或者在循环之前截取去掉参数最后位置的',';

在C#中也经常有这样的操作,为了避免空值出现,可以在截取时加一个参数,如下

public String GetIds(string ids)
        {
            if (ids.Length == 0)
                return null;
            StringBuilder idlist = new StringBuilder(300);
            string[] idarray = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string id in idarray)
            {
                idlist.Append(Convert.ToInt32(id) + ",");
            }
            if (idarry.Length > 0)
                idlist.Remove(idlist.Length - 1, 1);
            return idlist.ToString();
        }