为什么不能用java for循环遍历数组发送一个数组?

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)3被浏览1,221分享邀请回答0添加评论分享收藏感谢收起for内新数组循环赋值,for外无法显示,为何?已定义变量h,显示undefined,为何?
HTML&&html &&head&&meta http-equiv="Content-Type" content="text/ charset=utf-8" /&&title&流程控制语句&/title&&script type="text/javascript"& //第一步把之前的数据写成一个数组的形式,定义变量为 infos var infos=[ ['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']] //第一次筛选,找出都是大一的信息var infos1=new Array();var infos2=new Array();for(var i=0,h=0;i&infos.i++){
for(var j=0;j&infos[0].j++)
if(infos[i][j]=='大一')
infos1[h]=infos[i];//这样赋值不可以吗?
document.write(infos1[h]+"&br&");
/* infos1.push(infos[i]);
document.write(infos1[h]+"&br&");//屏蔽infos1[h]=infos[i],下面句子中h显示undefined,怎么回事?*/
}document.write(infos1+"&br&");//为什么显示不出这个数组?document.write(infos1.length+"&br&"); //为什么结果显示为1? //第二次筛选,找出都是女生的信息
for(var i=0,h=0;i&infos1.i++){
for(var j=0;j&infos1[0].j++)
if(infos1[i][j]=='女')
infos2[h]=infos1[i];
document.write(infos2[h][0]+"&br&");
}&/script&&/head&&body&&/body&&/html&
只有h没自加的问题,自加后你注释的也正确执行,没有错误的
恩,可以啦!不过还有个问题,
infos1[h]=infos[i];
document.write(infos1[h]+&&br&&);
删掉infos1[h]=infos[i];直接运行后面的,会出现undefined,可是在一开始的
for(var i=0,h=0;i&infos.i++)里面就定义了h啊!
这个undefined是指infos1[0]的值由于空值返回的undefined,不是未定义,未定义的直接就报错停止啥都不输出了,不信你把h换成a试试
写下你的评论...
写下你的评论...
非常感谢,代码我看到了,非常简单,但是上面的代码虽然乱,是我自己写的,碰到很多的问题,所以想解决~
写下你的评论...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标?
这是一个比较经典的前端面试题,也可以当笔试题,咋一看,好像难度不大,实际上考察的知识点还不少,值得写篇文章来备忘!废话不多说,直接进入正文!
为了理解这道题的意思,我们先用传统的方法来实现一下:
使用for方法:
  var arr = new Array(100);
for(var i=0;i&arr.i++){
console.log(arr);
  var arr = new Array();
for(var i=0;i&100;i++){
arr.push(i);
console.log(arr);
可以得到一个0-99的数组,使用while,do while也可以实现,这里就不写了,那不用循环,怎么得到呢?
第一种:Object.keys()
  var arr = Object.keys(Array.apply(null, {length:100}))
  console.log(arr);
这里通过Array.apply(null, {length:100})创建一个长度为100的数组,尽管里面的值为undefined,然后我们使用Object.keys()方法获取数组的key值,那这里就可以get到Object.keys()方法的新技能了,你还不知道,去查查吧!
但是这里得到的数组是一个字符串数组,不是数字,所以我们需要再加工一下,字符串转数字的方法就很多了,这里用map()方法:
  var arr = Object.keys(Array.apply(null, {length:100})).map(function(item){
console.log(arr);
+号是一个转换格式的小技巧,你也可以使用parseInt
第二种:Array.from()
  var arr = Array.from({length:100}, (v,k) =& k);
console.log(arr);
这里使用的Array.from()方法,从类数组或可迭代的对象创建一个新数组,你不懂用法,去查查吧!
第三种:Array.keys()
  var arr = new Array(100).keys();
console.log(Array.from(arr));
这里主要使用Array.keys()方法,获取数组的key值
第四种:Object.keys() 与&Array.from()
  var arr = Object.keys(Array.from({length:100}));
console.log(arr);
这种方式创建的也是一个字符串数组,所以需要转一下,方式跟第一种一样
  var arr = Object.keys(Array.from({length:100})).map(function(item){
console.log(arr);
实现原理大致说一下,先用Array.from得到一个100值为undefined的数组,然后获取数组的key值,最终返回一个数组,不明白的可以仔细领会一下第二种和第三种
第5种:使用...扩展运算符
var arr = [...Array(100).keys()];
console.log(arr);
或者可以改写成:
var arr = [...Array.from({length:100}).keys()];
console.log(arr);
不熟悉扩展运算符的可以去es6教程里面看一下,这里就不介绍了
第6种:使用String()方法,比较特别
var arr = Object.keys(String(Array(101)));
console.log(arr);
这里需要用101位,为什么?因为在创建一个100个值的数组的时候,因为是空值数组,在将数组转成字符串的时候,实际上是存的空值之间的逗号(,),2个值才有一个逗号,3个值有2个逗号,以此类推,100个值需要101位,然后用Object.keys()
方法转成数组,弄懂前面的方法的应该知道,此时的数组是一个字符串数组,所以还需要安装方法一处理一下:
var arr = Object.keys(String(Array(100))).map(function(item){
console.log(arr);
第7种:使用Int8Array(),比较偏门
var arr = Object.keys(new Int8Array(100)).map(function(item){
console.log(arr);
需要了解原理的同学,建议看一下Int8Array()的api
第8种:setInterval方法,感觉更偏门了
  var arr = [];
var i = 0;
var timer = setInterval(function(){
arr[i] = i++;
if(i&=100){
clearInterval(timer);
console.log(arr);
通过定时器的思路,给数组赋值,确实很妙
第9种:受定时器启发,可以用递归调用
  var arr = [];
var i = 0;
function MakeArray(num){
if(i&num){
arr[i] = i++;
MakeArray(num);
console.log(MakeArray(100));
第10种:可以使用第七种的变种,请看:
  var arr = new Array(100).toString().split(',').map(function(item,index){
console.log(arr);
我觉得这个知识点给出10种方法,应该差不多了,但是方法远远不止这10种,比如说截取网页中的100个字符,然后获取索引,比如说用二进制等等,奇淫巧技数不胜数,这里就不一一赘述了!
我觉得一个话题或者说一个命题,能够牵扯出别的知识点,学习到更多的技巧,那这个命题就是有价值的,也是有意义的,不想多说了,一张图结束今天的话题!
如果你觉得你那里有什么好的实现方式,也可以在评论中发出来给大家参考一下!
原创不易,欢迎转载,转载时请注明出处,谢谢!
阅读(...) 评论()}

我要回帖

更多关于 for循环数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信