【问题标题】:Make sure variable is array [duplicate]确保变量是数组[重复]
【发布时间】:2018-12-31 11:54:27
【问题描述】:

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

我尝试使用扩展运算符来确保变量变成一个数组,但显然这也不起作用:

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

如何确保我正在执行filter()map() 的变量是一个数组?我听说Array.isArray 还不完全支持。

【问题讨论】:

标签: javascript


【解决方案1】:

您可以使用instanceof 来检查变量是否为数组。

if(variable instanceof Array){
  //variable is an Array
} else {
  //variable is not an Array
}

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

if(Array.isArray(variable)){
 //variable is an Array
} else {
  //variable is not an Array
}

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));

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

 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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多