我现在有两组数组,他们都是一个对象下,并且默认是必填的,比如
下面这个类似于网易新闻底部导航功能,我想把他封装成一个插件,别人直接用就行了
var obj={
arr1:["新闻","阅读","视听","发现","我"],//文字
arr2:["news.jpg","read.jpg","viedo.jpg","find.jpg","me.jpg"],//文字上面对应背景图片
}
我的想法是如果arr1等于零就不往下操作了,还有就是arr2的长度不能大于arr1
if(obj.arr1.length===0 || obj.arr2.length>obj.arr1.length){
return [];
}
不过我想要是再向obj里再添加个arr3比如用来做当前背景色的,那上面的判断还是要继续加个
if(obj.arr1.length===0 || obj.arr2.length>obj.arr1.length|| obj.arr3.length>obj.arr1.length){
return [];
}
这个自个都觉得挺恶心的,要是还要继续加那得多长,有没有更好的解决办法???或者说更合理的有利于维护的写法
function check(obj){
var len = obj['arr1'].length;//取 arr1 的长度
for(var key in obj){
if(obj.hasOwnProperty(key)){
if(
obj[key].length === 0 //检测每一项的长度是否为 0
|| obj[key].length > len //每一项的长度不能大于 arr1 的长度
){
return false;
}
}
}
return true;
}
console.log(check({
arr1:["新闻","阅读","视听","发现","我"],//文字
arr2:["news.jpg","read.jpg","viedo.jpg","find.jpg","me.jpg"],//文字上面对应背景图片
}));
console.log(check({
arr1:["新闻","阅读","视听","发现","我"],//文字
arr2:["news.jpg","read.jpg","viedo.jpg","find.jpg","me.jpg"],//文字上面对应背景图片
arr3:["news.jpg","read.jpg","viedo.jpg","find.jpg","me.jpg"]//文字上面对应背景图片
}));
console.log(check({
arr1:["新闻","阅读","视听","发现","我",'asdf'],//文字
arr2:["news.jpg","read.jpg","viedo.jpg","find.jpg","me.jpg"],//文字上面对应背景图片
arr3:["news.jpg","read.jpg","viedo.jpg","find.jpg","me.jpg",'asdf','asdf'],//文字上面对应背景图片
arr4:["news.jpg","read.jpg","viedo.jpg","find.jpg","me.jpg",'asdf'],//文字上面对应背景图片
}));
以上的代码是根据楼主的描述所编写的, 不过 你确定你的代码在 后面的其他数据项的数目小于 arr1.length
的时候, 不会出错吗?
比如 arr2
只有 2 个的时候, 你后面的那几个的背景图片怎么显示?
我怎么感觉, 其他的数据量只能 >= arr1.length
的时候 才算正确呢?
你百度下argument
判断的时候可以这样:
if(argument[0] == ""){
当第一个参数为空时
}
将多个字符串数组变成一个对象,这样扩展也方便:
var objs=[
{
title: "新闻",
img : "news.jpg"
},
{
title: "阅读",
img : "read.jpg"
},
{
title: "视听",
img : "viedo.jpg"
},
{
title: "发现",
img : "find.jpg"
},
{
title: "我",
img : "me.jpg"
}
]