quiz
quiz copied to clipboard
JS基础测试34期
本期题目如下:
本期答题非开放性问题,因此:
不要查资料,答题前不要看别人回答,答题后可以,但不能修改自己回答
大家提交回答的时候,注意缩进距离,起始位置从左边缘开始;另外,github自带代码高亮,所以请使用下面示意的格式。
```js // 你的JS代码写在这里 ```
其它:
- 首位答题者可获得直播翻牌机会;
- 本期为下半学期第一期,因此从零开始重新计分;
- 本次答疑直播为
7月6日上午10:00(家里小朋友生病,暂时改期为7月7日上午10:00),大约30分钟;
-
4
-
arr.filter( item => !!item) // zxx: 本题只是过滤空数组项,不包括null, undefined这类。
-
[1, NaN, NaN, NaN] // 如果按照空数组项转换,应该是 [1, NaN, , NaN]
-
arr.concat(arr2)
-
Array.from(new Set(arr3))
1、arr.length
2、arr = arr.flat()
3、[1, NaN, NaN, NaN]
4、arr3 = arr.concat(arr2)
5、Array.from(new Set(arr3))
// 第一题
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 转化得到数组
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
-
4
-
arr = arr.filter(option => option)
-
[1, NaN, undefined, NaN]
-
const arr3 = arr.concat(arr2)
-
Array.from(new Set(arr3))
- 4
- arr.filter(x => x != undefined)
- [1, NaN, NaN, NaN]
- arr.concat(arr2)
- [...new Set(arr3)]
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);
- 4
- arr.filter(() => true)
- [1, NaN, NaN, NaN]
- arr3 = arr.concat(arr2)
- Array.from(new Set(arr3))
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)]
//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))
第 1 题:arr 的长度是多少?
解析:数组中的空元素 (empty 元素) 也会被算到数组长度中
console.log(arr.length); // 4
第 2 题:去除 arr 中的空数组项
解析:数组中的 empty 元素不会参与数组项遍历,故只需返回 true 即可过滤掉 empty 元素(而不会牵连 0
、NaN
、null
、undefined
、''
这些)
arr = arr.filter(it => true);
console.log(arr); // [1, 2, 3]
第 3 题:写出表达式运行结果
解析:parseInt 接收 string
和 radix
两个参数,前者是待转换的字符串,后者是进制参考基数,默认是 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]
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]
//第一题
4
//第二题
arr = arr.flat();
//第三题
[1, NaN, NaN]
//第四题
var arr3 = arr.concat(arr2);
//第五题
arr3 = [...new Set(arr3)];
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]
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))
- 4
arr = arr.reduce(function(original, next) {
if (next !== undefined) {
original.push(next);
}
return original;
}, []);
- [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;
}, []);
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)
//第一题
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
})
-
4
-
arr=arr.filter(item=>{ return true })
-
let arr2=[1, NaN, NaN]
-
let arr3=arr.concat(arr2)
-
Array.from(new Set(arr3))
- 4
- arr.filter(item => !!item)
- [1, NaN, NaN, NaN]
- [...arr, ...arr2]
- [...new Set(arr3)]
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]
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);
- 4
- 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)]
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);
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不友好
//1.
4
//2
arr = arr.filter(item => item !== undefined)
//3
[1,NaN,NaN]
//4
arr3 = arr.concat(arr2)
//5
arr3 = [...new Set(arr3)]
// 第一题
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]
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]
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]
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)]