quiz icon indicating copy to clipboard operation
quiz copied to clipboard

JS基础测试34期

Open zhangxinxu opened this issue 5 years ago • 62 comments

本期题目如下:

本期答题非开放性问题,因此:

不要查资料,答题前不要看别人回答,答题后可以,但不能修改自己回答

大家提交回答的时候,注意缩进距离,起始位置从左边缘开始;另外,github自带代码高亮,所以请使用下面示意的格式。

```js
// 你的JS代码写在这里
 ```

其它:

  1. 首位答题者可获得直播翻牌机会;
  2. 本期为下半学期第一期,因此从零开始重新计分;
  3. 本次答疑直播为7月6日上午10:00家里小朋友生病,暂时改期为7月7日上午10:00),大约30分钟;

zhangxinxu avatar Jul 03 '19 11:07 zhangxinxu

  1. 4

  2. arr.filter( item => !!item) // zxx: 本题只是过滤空数组项,不包括null, undefined这类。

  3. [1, NaN, NaN, NaN] // 如果按照空数组项转换,应该是 [1, NaN, , NaN]

  4. arr.concat(arr2)

  5. Array.from(new Set(arr3))

9lk avatar Jul 03 '19 11:07 9lk

1、arr.length
2、arr = arr.flat()
3、[1, NaN, NaN, NaN]
4、arr3 = arr.concat(arr2) 5、Array.from(new Set(arr3))

RichardDFang avatar Jul 03 '19 11:07 RichardDFang

// 第一题
let arr = [1,2,,3]
// arr 的长度是4

// 第二题
let arr2 = [];
[1,2,,3].forEach(v=>{v!=undefined && arr2.push(v)})
// 囧 尽然忘记 filter 了 let arr2 = arr.filter(v => v != undefined);

// 第三题
[1, NaN, NaN, NaN]
// arr2.map(parseInt)  ->parseInf(1,0)-> parseInf(2,1) -> parseInf(undefined,2) -> parseInf(3,3)

// 第四题
let arr3 = arr2.conact(arr)

// 第五题
Array.from(new Set([1,2,3,3]))  // 通过Set去重,得到类数组,Array.from 转化得到数组

bugaosunihhh avatar Jul 03 '19 11:07 bugaosunihhh

var arr = [1,2,,3];
arr.length = 4; // 题1
arr.filter(item => !item.prototype); // 题2
var arr2 = arr.map(parseInt); 
/*题3 
map前两个参数为 value, index;
parseInt两个参数:数字,进制;
相当于执行parseInt(1,0);parseInt(2,1);parseInt(empty, 2); parseInt(3, 3);
结果: [1, NaN, empty, NaN]
*/

var arr3 = arr.concat(arr2); // 题4
arr3 = [...new Set(arr3)]; // 题5

uaison avatar Jul 03 '19 11:07 uaison

  1. 4

  2. arr = arr.filter(option => option)

  3. [1, NaN, undefined, NaN]

  4. const arr3 = arr.concat(arr2)

  5. Array.from(new Set(arr3))

jiyihui avatar Jul 03 '19 11:07 jiyihui

  1. 4
  2. arr.filter(x => x != undefined)
  3. [1, NaN, NaN, NaN]
  4. arr.concat(arr2)
  5. [...new Set(arr3)]

xingw-z avatar Jul 03 '19 11:07 xingw-z

let arr = [1,2,,3];
//1.arr的长度是4
console.log(arr.length);
//2.
for(let i=arr.length-1;i>=0;i--){
  if(!arr[i]){
    arr.splice(i,1);
  }
}
console.log(arr);
//3.arr2=[1,NaN,NaN]
const arr2 = arr.map(parseInt);
console.log(arr2.toString());
//4.
let arr3 = arr.concat(arr2);     //zxx: let IE不支持,不得分
console.log(arr3);
//5.
arr3 = [...new Set(arr3)];
console.log(arr3);

liyongleihf2006 avatar Jul 03 '19 12:07 liyongleihf2006

  1. 4
  2. arr.filter(() => true)
  3. [1, NaN, NaN, NaN]
  4. arr3 = arr.concat(arr2)
  5. Array.from(new Set(arr3))

zy017 avatar Jul 03 '19 12:07 zy017

1. 4
2. arr.splice(2,1)
3. [1,2,0,3]
4. let arr3 = arr.concat(arr2)    //zxx: let IE不支持
5. let arr3 = [...new Set(arr3)]

simplefeel avatar Jul 03 '19 12:07 simplefeel

//1. 
4
//2
arr.filter(v=>v!==undefined)
//3
arr2=[1,NaN,undefined,NaN]
//4
arr3=Array.prototype.concat.apply(arr,arr2)
//5
Array.from(new Set(arr3))

Seasonley avatar Jul 03 '19 12:07 Seasonley

第 1 题:arr 的长度是多少?

解析:数组中的空元素 (empty 元素) 也会被算到数组长度中

console.log(arr.length);  // 4

第 2 题:去除 arr 中的空数组项

解析:数组中的 empty 元素不会参与数组项遍历,故只需返回 true 即可过滤掉 empty 元素(而不会牵连 0NaNnullundefined'' 这些)

arr = arr.filter(it => true);
console.log(arr);  // [1, 2, 3]

第 3 题:写出表达式运行结果

解析:parseInt 接收 stringradix 两个参数,前者是待转换的字符串,后者是进制参考基数,默认是 10。当 parseInt 作为 map 方法的回调函数时,parseInt 的 string 的实参是数组项,radix 的实参是数组索引值,故执行过程如下:

parseInt(1, 0);  // 1. `radix` 为 0 时会自动转换成 10,故输出 1
parseInt(2, 1);  // 2. `radix` 值非法(没有一进制),无法解析,故输出 NaN
parseInt(3, 2);  // 3. `string` 为 3 ,`radix` 为 2,无法将 3 按二进制解析,故输出 NaN
let arr2 = arr.map(parseInt);
console.log(arr2);  // [1, NaN, NaN]

第 4 题:arr 和 arr2 合并成数组 arr3,兼容 IE8+

var arr3 = arr.concat(arr2);
console.log(arr3);  // [1, 2, 3, 1, NaN, NaN]

第 5 题:去除 arr3 中重复内容

解析:利用 ES6 中的 Set 集合不存在重复项的特点来去重

arr3 = [...new Set(arr3)];
console.log(arr3);  // [1, 2, 3, NaN]

wingmeng avatar Jul 03 '19 12:07 wingmeng

let arr = [1,2,,3]
// 第一题
4

//第二题 
arr = arr.filter(item=>{
  if(item){
    return item
  }
})

// 第三题
//如果紧接第二题答案是
arr2 = [1, NaN, empty, NaN]
//如果初始数组不被过滤答案是
arr2 = [1, NaN, NaN]

//第四题
arr3 = (arr2.join()+','+arr.join()).split(',')

//第五题
let arrset = new Set(arr3)
arr3 = [...arrset]

sghweb avatar Jul 03 '19 12:07 sghweb

//第一题
4
//第二题
arr = arr.flat();
//第三题
[1, NaN, NaN]
//第四题
var arr3 = arr.concat(arr2);
//第五题
arr3 = [...new Set(arr3)];

XboxYan avatar Jul 03 '19 12:07 XboxYan

let arr = [1, 2, , 3];

// 1. arr 的长度是多少?
console.log(arr.length) // 4

// 2. 去除 arr 中的空数组项
let arrFilter = arr.filter(item => item);
console.log(arrFilter) // [1, 2, 3]

// 3. arr2 = arr.map(parseInt), 请填写一下内容
let arr2 = arr.map(parseInt);
console.log(arr2) // [1, NaN, NaN];

// 4. arr 和 arr2 合并成数组arr3, 兼容IE8+
let arr3 = [].concat(arr,arr2);
console.log(arr3) // [1, 2, 3, 1, NaN, NaN]

// 5. 去除数组arr3的重复内容
arr3 = [...new Set(arr3)];
console.log(arr3) // [1, 2, 3, NaN]

jaredchao avatar Jul 03 '19 13:07 jaredchao

1,  4

2,  arr.filter(Boolean)    //zxx: 赞,学习了,Number, String均可,更新,经反馈,Boolean会过滤false项

3,  [1,  NaN, NaN]

4,  arr.concat(arr2)

5,  Array.from(new Set(arr3))

ziyingjie avatar Jul 03 '19 13:07 ziyingjie

  1. 4
arr = arr.reduce(function(original, next) {
	if (next !== undefined) {
		original.push(next);
	}
	return original;
}, []);
  1. [1, NaN, NaN]
arr3 = arr.concat(arr2);
var listHasNaN = function(list) {
	return list.filter(function(v) {
		return isNaN(v)
	}).length > 0;

};
arr3 = arr3.reduce(function(original, current) {
	if ((isNaN(current) && !listHasNaN(original)) || (!isNaN(current)  && original.indexOf(current) < 0)) {
		original.push(current);
	}
	return original;
}, []);

NeilChen4698 avatar Jul 03 '19 13:07 NeilChen4698

let arr = [1, 2, , 3]
// 1. 4
// 2
arr = arr.filter(v => v !== undefined)
// 3  [1, NaN, NaN]
// 4 
let arr2 = [1, NaN, NaN]
let length = arr2.length;
let arr3 = arr     // zxx: arr3最好复制arr
for (var i = 0; i < length; i++) {
    arr3.push(arr2[i])
}
console.log(arr3)
// 5
// 不兼容ie8+
arr3 = [...new Set(arr3)] // 无法处理NaN
console.log(arr3)
// 兼容
let arr3Length = arr3.length
let arr4 = [arr3[0]]
for (let i = 1; i < arr3Length; i++) {
    for (let j = 0; j < arr4.length; j++) {
        if (arr3[i] === arr4[j] || (isNaN(arr3[i] && isNaN(arr4)))) {
            break
        }
    }
    arr4.push(arr3[i])
}
console.log(arr4)

livetune avatar Jul 03 '19 13:07 livetune

//第一题
4
//第二题
let arr = [1,2, ,3]
// arr = arr.filter(item => {
//   return item;
// })
arr = arr.filter(item => item)
//第三题
arr2 = [1, NaN, NaN]
//第四题
arr3 = arr.concat(arr2);
//第五题
//zxx: NaN不友好
arr3 = arr3.filter((item,index,arr) => {
  return arr3.indexOf(item) === index
})

zengqingxiao avatar Jul 03 '19 13:07 zengqingxiao

  1. 4
  2. arr=arr.filter(item=>{ return true })
  3. let arr2=[1, NaN, NaN]
  4. let arr3=arr.concat(arr2)
  5. Array.from(new Set(arr3))

wang-baojin avatar Jul 03 '19 14:07 wang-baojin

  1. 4
  2. arr.filter(item => !!item)
  3. [1, NaN, NaN, NaN]
  4. [...arr, ...arr2]
  5. [...new Set(arr3)]

guqianfeng avatar Jul 03 '19 14:07 guqianfeng

 var arr=[1,2,,3];
 console.log(arr.length);//1、4
    
    for(var i=0;i<arr.length;i++){
    	if(arr[i]==''||arr[i]==null||arr[i]==undefined){
    		arr.splice(i,1);//删除当前i位置的为空的1个数
    		i=i-1;
    	}
    }
    console.log(arr);//2、[1, 2, 3]
    
    var arr2=arr.map(parseInt);
    console.log(arr2);//3、[1, NaN, NaN]
    
    var arr3=[];
    if(arr2.length>arr.length){  //zxx: 为何需要判断长度?
    	arr3=arr2.concat(arr)
    }else{
    	arr3=arr.concat(arr2)
    }
    console.log(arr3);//4、[1, 2, 3, 1, NaN, NaN]
    
   var set = new Set(arr3);//去重
   var temp = Array.from(set); //转为数组
   console.log(temp);//  5、[1, 2, 3, NaN]
    

WGHwebitem avatar Jul 03 '19 14:07 WGHwebitem

let arr = [1,2,,3];
  //第一题 4
  console.log(arr.length);
 
  //第二题
  //es5写法
  arr = arr.filter(function(i){
    return i;
  });
  //es5写法
  arr = arr.filter(i => i);
  console.log(arr);
  
  //第三题 [1, NaN, NaN]
  arr2 = arr.map(parseInt);
  console.log(arr2);
  
  //第四题 [1, 2, 3, 1, NaN, NaN]
  arr3 = arr.concat(arr2);
  console.log(arr3);
  
  //第五题 [1, 2, 3, NaN]
  arr3 = arr3.reduce((acc,cur)=>{
    if(!acc.includes(cur)){
      return acc.concat(cur)
    }else{
      return acc
    }
  },[])
  console.log(arr3);

silverWolf818 avatar Jul 03 '19 14:07 silverWolf818

  1. 4
  2. String([1,2,,3]).replace(/(,+)/g,',') 3.[1,NaN,NaN,NaN] 4.let arr3 = arr; Array.prototype.push.apply(arr3, arr2) 5.[...new Set(arr3)]

mengxiaoixao avatar Jul 03 '19 15:07 mengxiaoixao

let arr = [1,2,,3];
//(1)	4
//(2)
arr.filter((ele) => { return typeof ele !== 'undefined'});
//(3)	arr2 = [parseInt(1, 0), parseInt(2, 1), parseInt(undefined, 2), parseInt(3, 3)]
//(4)   
arr3 = [1,2,,3].concat([], [parseInt(1, 0), parseInt(2, 1), parseInt('', 2), parseInt(3, 3)]);
//(5)
function singleCope(arr) {
	let arrCopy = [];
	arr.forEach((ele) => {
		if (!arrCopy.includes(ele)) {
			arrCopy.push(ele);
		}
	});
	return arrCopy;
}
singleCope(arr3);

zzzluyan avatar Jul 03 '19 16:07 zzzluyan

let arr = [1,2,,3]

// 1
// arr.length =  4

// 2 
arr = arr.filter(item => item !== undefined)
// arr = [1,2,3]

// 3
第 2 题改变了 arr 的值
arr2 = [1, NaN, NaN]

// 4
arr3 = arr.concat(arr2)
// arr3 = [1, 2, 3, 1, NaN, NaN]

// 5
arr3 = arr3.filter((item, idx, array) => array.indexOf(item) === idx)
// arr3 =p[1, 2, 3] 
// zxx: NaN不友好

z-xl-t avatar Jul 03 '19 23:07 z-xl-t

//1.
 4
//2
 arr = arr.filter(item => item !== undefined)
//3
 [1,NaN,NaN]
//4
 arr3 = arr.concat(arr2)
//5
 arr3 = [...new Set(arr3)]

ghost avatar Jul 04 '19 01:07 ghost

// 第一题
arr.length = 3

// 第二题
arr = arr.filter(el => !!el)

// 第三题
[1, NaN, NaN]

// 第4题
arr3 = arr.concat(arr2)

// 第5题
var temp = []
arr3.forEach(el => {
   if (temp.indexOf(el) === -1) {
       emp.push(el)
   }
})
arr3 = temp  // [1, 2, 3, NaN, NaN]

JaimeCheng avatar Jul 04 '19 02:07 JaimeCheng

let arr = [1,2,,3];

/** Q1
 * answer: 4
 */

/* Q2 */
arr = arr.filter(item => !!item);

/* Q3  based on Q2 */
let arr2 = arr.map(parseInt);
// arr2  will be [1, NaN, NaN]

/* Q4 */
let arr3 = arr.concat(arr2);
// arr3 will be [1, 2, 3, 1, NaN, NaN]

/* Q5 */
arr3 = new Set(arr3);
// arr3 will be [1, 2, 3, NaN]

jiaoHsiung avatar Jul 04 '19 02:07 jiaoHsiung

1. console.log(arr.length); // 4
2. arr = arr.filter((value) => !!value);
3. arr2 = arr.map(parseInt);
   console.log(arr2); // 1 2 3,好像只有我下意识的认为应该输出123
4. arr3 = arr.concat(arr2);
5. arr3.forEach((value,index) => {
     if(arr3.indexOf(value)<index){
       arr3.splice(index, 1);
     }
   });
   // zxx: 此方法有bug,[1,2,2,2]去重后结果是[1,2,2]

GCGligoudan avatar Jul 04 '19 02:07 GCGligoudan

1. arr.length = 4
2. arr = arr.filter(x => x ? : '')
3. [1, NaN, 0, NaN]
4. let arr3 = arr1.concat(arr2)    //zxx: let IE可不支持哦
5. arr3 = [...new Set(arr3)]

lizardlove avatar Jul 04 '19 03:07 lizardlove