如何检查对象是否为数组?[重复]

46 浏览
0 Comments

如何检查对象是否为数组?[重复]

这个问题已经有了答案

在JavaScript中如何检查变量是否是数组?

我试图编写一个函数,可以接受字符串列表或单个字符串。如果它是一个字符串,那么我想将其转换为只有一个项目的数组,这样我就可以在不担心出错的情况下循环它。

那么如何检查变量是否是数组?

admin 更改状态以发布 2023年5月24日
0
0 Comments

在ECMAScript标准中,查找Object类的方法是使用Object.prototype中的toString方法。

if(Object.prototype.toString.call(someVar) === '[object Array]') {
    alert('Array!');
}

或者您可以使用typeof测试其是否为字符串:

if(typeof someVar === 'string') {
    someVar = [someVar];
}

或者,如果您不关心性能,您可以将其连接到一个新的空数组中。

someVar = [].concat(someVar);

还有构造函数可以直接查询:

if (somevar.constructor.name == "Array") {
    // do something
}


请查看来自T.J. Crowder的彻底解答,如下面他的评论中发布的那样。

查看这个基准测试,了解哪种方法的性能更好:http://jsben.ch/#/QgYAV

@Bharath那里,使用ES6将字符串转换为数组作为所问的答案:

const convertStringToArray = (object) => {
   return (typeof object === 'string') ? Array(object) : object
}

假设:

let m = 'bla'
let n = ['bla','Meow']
let y = convertStringToArray(m)
let z = convertStringToArray(n)
console.log('check y: '+JSON.stringify(y)) . // check y: ['bla']
console.log('check y: '+JSON.stringify(z)) . // check y: ['bla','Meow']

0