关于javascript:确保变量是数组

Make sure variable is array

本问题已经有最佳答案,请猛点这里访问。

我想在可能是单个对象或数组的变量上运行map()。但是,如果变量是一个对象,我就不能这样做,因为它会引发一个错误。

我尝试使用spread运算符确保变量变为数组,但显然这也不起作用:

1
2
3
4
// items can either be an object or an array of objects
renderedItems = [...items]
    .filter(item => !!item)
    .map((item, index) => _this.renderItem(item, index));

我怎样才能确保我做的变量是一个EDCOX1(1)和map()on是一个数组?我听说Array.isArray还没有得到充分的支持。


可以使用EDCOX1(0)来检查变量是否是数组。

1
2
3
4
5
if(variable instanceof Array){
  //variable is an Array
} else {
  //variable is not an Array
}

1
2
3
4
5
6
7
var array = [1, 2, 3, 4, 5];
var str ="String";
function isArray(obj){
 return obj instanceof Array;
}
console.log("array is an Array:"+isArray(array));
console.log("str is an Array:" + isArray(str));

您也可以使用Array.isArray

1
2
3
4
5
if(Array.isArray(variable)){
 //variable is an Array
} else {
  //variable is not an Array
}

1
2
3
4
5
6
7
var array = [1, 2, 3, 4, 5];
var str ="String";
function isArray(obj){
    return Array.isArray(obj);
}
console.log("array is an Array:"+isArray(array));
console.log("str is an Array:" + isArray(str));

可以检查变量的构造函数是否等于数组。

1
2
3
4
5
6
7
 var array = [1, 2, 3, 4, 5];
var str ="String";
function isArray(obj){
        return obj.constructor === Array;
 }
 console.log("array is an Array:"+isArray(array));
console.log("str is an Array:" + isArray(str));