找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 41|回复: 0

100个最常问的JavaScript面试问答-第3部分(共10部分)

[复制链接]

544

主题

55

回帖

2000

积分

管理员

积分
2000
发表于 2026-5-12 21:45:23 | 显示全部楼层 |阅读模式
问题21.如何在JavaScript中清空数组?

答:

有四种方法可以在JavaScript中清空数组
通过分配一个空数组:
var array1 = [1, 22, 24, 46];
array1 = [ ];

通过将数组长度分配为0:
var array1 = [1, 22, 24, 46];
array1.length=0;

通过弹出数组的元素:
var array1 = [1, 22, 24, 46];
while(array1.length > 0) {
array1.pop();
}

通过使用拼接数组函数:
var array1 = [1, 22, 24, 46];
array1.splice(0, array1.length)

问题22.如何从数组中删除重复项?

答:

有多种方法可以从数组中删除重复项,但让我告诉您一种最流行的方法。
使用过滤器-通过对JavaScript数组应用过滤器,可以从其中删除重复项。要调用该filter()方法,需要三个参数。它们分别是数组self,当前元素elem和当前元素的索引index。
let language = ['JavaScript', 'Dart', 'Kotlin', 'Java', 'Swift', 'Dart']function unique_array(arr) {   let unique_array = arr.filter(function (elem, index, self) {       return index == self.indexOf(elem);   });   return unique_array}console.log(unique_array(language));// Logs [ 'JavaScript', 'Dart', 'Kotlin', 'Java', 'Swift' ]



问题23.如何检查值是否为数组?

答:

我们可以使用Array全局对象中可用的Array.isArray()方法来检查值是否为Array。
当传递给它的参数是数组时,它返回true,否则返回false。
console.log(Array.isArray(5));  //logs false
console.log(Array.isArray("")); //logs false
console.log(Array.isArray()); //logs false
console.log(Array.isArray(null)); //logs false
console.log(Array.isArray({ length: 5 })); //logs false
console.log(Array.isArray([])); //logs true

如果您的环境不支持此方法,则可以使用polyfill实现。
function isArray(value){
   return Object.prototype.toString.call(value) === "[object Array]"
}

问题24.如何实施Array.prototype.map()方法

答:

作为Array.prototype.map方法的MDN描述,该map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。
map()方法的语法是
let newArray = arr.map(callback(currentValue[, index[, array]]) {
  // return element for newArray, after executing something
}[, thisArg]);

这是它的实现
function map(arr, mapCallback) {  // Check if the parameters passed are right.  if (!Array.isArray(arr) || !arr.length || typeof mapCallback !== 'function') {    return [];    }    else {      let result = [];      // Avoid mutating the original array.      for (let i = 0, len = arr.length; i < len; i++) {        result.push(mapCallback(arr, i, arr));        // push the result of the mapCallback in the 'result' array        }        return result; // return the result array    }}



问题25.如何实现Array.prototype.filter()方法

答:

作为Array.prototype.filter方法的MDN描述,该filter()方法将创建一个新数组,其中包含所有通过通过所提供函数实现的测试的元素。
语法是
let newArray = arr.filter(callback(currentValue[, index[, array]]) {
  // return element for newArray, if true
}[, thisArg]);

实现是
function filter(arr, filterCallback) {  // Check if the parameters passed are right.  if (!Array.isArray(arr) || !arr.length || typeof filterCallback !== 'function') {    return [];    }    else {      let result = [];      // Avoid mutating the original array.      for (let i = 0, len = arr.length; i < len; i++) {        // check if the return value of the filterCallback is true or "truthy"        if (filterCallback(arr, i, arr)) {        // push the current item in the 'result' array if the condition is true        result.push(arr);      }    }    return result; // return the result array  }}



问题26.如何实现Array.prototype.reduce()方法

答:

该reduce()方法在数组的每个元素上执行reducer函数(由您提供),从而产生单个输出值。
reducer函数采用四个参数:
累加器,当前值,当前索引,源数组
语法是
arr.reduce(callback( accumulator, currentValue, [, index[, array]] )[, initialValue])

执行
function reduce(arr, reduceCallback, initialValue) {  // Check if the parameters passed are right.  if (!Array.isArray(arr) || !arr.length || typeof reduceCallback !== 'function'){    return [];  }  else {    // If no initialValue has been passed to the function we're gonna use the    let hasInitialValue = initialValue !== undefined;    let value = hasInitialValue ? initialValue : arr[0];    // first array item as the initialValue, Start looping at index 1 if there is no    // initialValue has been passed to the function else we start at 0 if there is an initialValue.    for (let i = hasInitialValue ? 0 : 1, len = arr.length; i < len; i++) {      // Then for every iteration we assign the result of the reduceCallback to the variable value.      value = reduceCallback(value, arr, i, arr);    }    return value;  }}



问题27.JavaScript中的名称函数是什么?

答:

命名函数在定义后便立即声明名称。可以使用function关键字将其定义为:
function named() {   // write code here}



问题28.可以将匿名函数分配给变量并将其作为参数传递给另一个函数吗?

答:

是的!可以将匿名函数分配给变量。
也可以将其作为参数传递给另一个函数。
例子是

let show = function () {  console.log('Anonymous function');};show();



问题29.什么是arguments object(参数对象)?

答:

参数对象是函数中传递的参数值的集合。
这是一个类似Array的对象,因为它具有length属性,我们可以使用数组索引符号参数[1]访问各个值
但它在数组中没有内置方法来进行每个,化简,过滤和映射。
它有助于我们了解函数中传递的参数数量。
问题30.可以将参数对象转换为数组吗?

答:

是的,我们可以使用Array.prototype.slice将arguments对象转换为数组。
function one() {   return Array.prototype.slice.call(arguments);}



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|联系我们

GMT+8, 2026-9-14 12:43 , Processed in 0.043039 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表