• 关于 isArray 的搜索结果

回答

在现代浏览器中,您可以 Array.isArray(obj) (受 Chrome 5,Firefox 4.0,IE 9,Opera 10.5和Safari 5支持) 为了向后兼容,您可以添加以下内容 only implement if no native implementation is available if (typeof Array.isArray === 'undefined') { Array.isArray = function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; } }; 如果使用jQuery,则可以使用jQuery.isArray(obj)或$.isArray(obj)。如果使用下划线,则可以使用_.isArray(obj) 如果您不需要检测在不同框架中创建的数组,也可以使用 instanceof obj instanceof Array 问题来源于stack overflow

保持可爱mmm 2020-01-08 15:30:14 0 浏览量 回答数 0

问题

[@徐雷frank][¥20]一个关于类get set器的编码规范问题

鬼域马 2019-12-01 20:28:40 524 浏览量 回答数 1

回答

您可以使用 Class.isArray() public static boolean isArray(Object obj) { return obj!=null && obj.getClass().isArray(); } 这适用于对象和原始类型数组。 对于toString,请看一下Arrays.toString。您必须检查数组类型并调用适当的toString方法。

保持可爱mmm 2020-02-08 12:10:52 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

回答

es6中加⼊了新的判断⽅法 if(Array.isArray(value)){ return true; } 在考虑兼容性的情况下可以⽤toString的⽅法 if(!Array.isArray){ Array.isArray = function(arg){ return Object.prototype.toString.call(arg)==='[object Array]' } }

前端问答 2019-12-19 07:37:39 0 浏览量 回答数 0

回答

Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object type],其中 type 为对象的类型。但当除了 Object 类型的对象外,其他类型直接使用 toString 方法时,会直接返回都是内容的字符串,所以我们需要使用call或者apply方法来改变toString方法的执行上下文。 const an = ['Hello','An']; an.toString(); // "Hello,An" Object.prototype.toString.call(an); // "[object Array]" 这种方法对于所有基本的数据类型都能进行判断,即使是 null 和 undefined 。 Object.prototype.toString.call('An') // "[object String]" Object.prototype.toString.call(1) // "[object Number]" Object.prototype.toString.call(Symbol(1)) // "[object Symbol]" Object.prototype.toString.call(null) // "[object Null]" Object.prototype.toString.call(undefined) // "[object Undefined]" Object.prototype.toString.call(function(){}) // "[object Function]" Object.prototype.toString.call({name: 'An'}) // "[object Object]" Object.prototype.toString.call() 常用于判断浏览器内置对象时 instanceof instanceof 的内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。 使用 instanceof判断一个对象是否为数组,instanceof 会判断这个对象的原型链上是否会找到对应的 Array 的原型,找到返回 true,否则返回 false。 [] instanceof Array; // true 但 instanceof 只能用来判断对象类型,原始类型不可以。并且所有对象类型 instanceof Object 都是 true。 [] instanceof Object; // true Array.isArray() 功能:用来判断对象是否为数组 instanceof 与 isArray 当检测Array实例时,Array.isArray 优于 instanceof ,因为 Array.isArray 可以检测出 iframes var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray(1,2,3); // [1,2,3] // Correctly checking for Array Array.isArray(arr); // true Object.prototype.toString.call(arr); // true // Considered harmful, because doesn't work though iframes arr instanceof Array; // false Array.isArray() 与 Object.prototype.toString.call() Array.isArray()是ES5新增的方法,当不存在 Array.isArray() ,可以用 Object.prototype.toString.call() 实现。 if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[object Array]'; };

九旬 2020-05-24 11:21:22 0 浏览量 回答数 0

回答

javascript的怪异行为和规范之一就是Array is Object。 您可以通过以下几种方法检查变量是否为数组: var isArr = data instanceof Array; var isArr = Array.isArray(data); 但是最可靠的方法是: isArr = Object.prototype.toString.call(data) == '[object Array]'; 由于您使用jQuery标记了问题,因此可以使用jQuery isArray函数: var isArr = $.isArray(data); 问题来源于stack overflow

保持可爱mmm 2020-02-07 00:59:42 0 浏览量 回答数 0

回答

Array.isArray 原生V8功能。快速,总是正确的。这是ES5的一部分。 arr instanceof Array 检查对象是否使用数组构造函数创建。 _.isArray // underscore method. 下划线的方法。这是摘自其来源的摘录 var toString = Object.prototype.toString, nativeIsArray = Array.isArray; _.isArray = nativeIsArray || function(obj) { return toString.call(obj) === '[object Array]'; }; 此方法接受一个对象并Object.prototype.toString在其上调用该方法。这将始终返回[object Array]数组。 根据我的亲身经历,我发现询问该toString方法是最有效的,但它不如ES5代码那么短或可读性instanceof Array也不如Array.isArrayES5代码快,我倾向于避免将其用于可移植性。 我个人建议您尝试使用underscore,这是其中包含通用实用程序方法的库。它具有许多有用的功能,可以使您的代码干燥。

保持可爱mmm 2020-02-08 14:05:27 0 浏览量 回答数 0

问题

Java数组反射:isArray与instanceof

保持可爱mmm 2020-02-06 22:37:57 0 浏览量 回答数 1

问题

Java数组反射:isArray与instanceof

保持可爱mmm 2020-01-16 17:49:30 1 浏览量 回答数 1

回答

Object.prototype.toString.call() 优点:这种方法对于所有基本的数据类型都能进行判断,即使是 null 和 undefined 。 缺点:不能精准判断自定义对象,对于自定义对象只会返回[object Object] instanceOf 优点:instanceof 可以弥补 Object.prototype.toString.call()不能判断自定义实例化对象的缺点。 缺点: instanceof 只能用来判断对象类型,原始类型不可以。并且所有对象类型 instanceof Object 都是 true,且不同于其他两种方法的是它不能检测出 iframes。 Array.isArray() 优点:当检测 Array 实例时,Array.isArray 优于 instanceof ,因为 Array.isArray 可以检测出 iframes 缺点:只能判别数组

茶什i 2019-12-02 03:19:54 0 浏览量 回答数 0

回答

JVM数组描述符。 [Z = boolean [B = byte [S = short [I = int [J = long [F = float [D = double [C = char [L = any non-primitives(Object) 要获取主要数据类型,您需要: [Object].getClass().getComponentType(); 如果“对象”不是数组,它将返回null。要确定它是否为数组,只需调用: [Any Object].getClass().isArray() 要么 Class.class.isArray();

保持可爱mmm 2020-02-08 19:35:01 0 浏览量 回答数 0

回答

使用Type.IsArray和Type.GetElementType()检查数组的元素类型。 Type valueType = value.GetType(); if (valueType.IsArray && expectedType.IsAssignableFrom(valueType.GetElementType()) { ... } 当心Type.IsAssignableFrom()。如果要检查类型是否完全匹配,则应检查是否相等(typeA == typeB)。如果要检查给定类型是类型本身还是子类(或接口),则应使用Type.IsAssignableFrom(): typeof(BaseClass).IsAssignableFrom(typeof(ExpectedSubclass))

保持可爱mmm 2020-02-09 13:17:42 0 浏览量 回答数 0

回答

function arraysEqual(_arr1, _arr2) { if (!Array.isArray(_arr1) || ! Array.isArray(_arr2) || _arr1.length !== _arr2.length) return false; var arr1 = _arr1.concat().sort(); var arr2 = _arr2.concat().sort(); for (var i = 0; i < arr1.length; i++) { if (arr1[i] !== arr2[i]) return false; } return true; } 请注意,这不会像以前的答案那样修改原始数组。

保持可爱mmm 2020-02-08 12:32:47 0 浏览量 回答数 0

回答

迭代的实现: let arr = [1, 2, [3, 4, 5, [6, 7], 8], 9, 10, [11, [12, 13]]] const flatten = function (arr) { while (arr.some(item => Array.isArray(item))) { arr = [].concat(...arr) } return arr } console.log(flatten(arr)) 递归的实现(ES6简写): const flatten = array => array.reduce((acc, cur) => (Array.isArray(cur) ? [...acc, ...flatten(cur)] : [...acc, cur]), [])

九旬 2020-05-24 11:47:20 0 浏览量 回答数 0

问题

angular.isArray() 不能够直接在html中使用吗?

a123456678 2019-12-01 20:17:53 882 浏览量 回答数 1

回答

在大多数情况下,应使用instanceof运算符测试对象是否为数组。 通常,您需要先测试对象的类型,然后再向下转换为编译时已知的特定类型。例如,也许您编写了一些可以使用Integer[]或的代码int[]。您想使用以下方法保护自己的演员instanceof: if (obj instanceof Integer[]) { Integer[] array = (Integer[]) obj; /* Use the boxed array / } else if (obj instanceof int[]) { int[] array = (int[]) obj; / Use the primitive array */ } else ... 在JVM级别,instanceof操作员将转换为特定的“ instanceof”字节代码,该代码在大多数JVM实现中都得到了优化。 在极少数情况下,您可能会使用反射遍历未知类型的对象图。在这种情况下,该isArray()方法可能会有所帮助,因为您在编译时不知道组件类型。例如,您可能正在实现某种序列化机制,并且能够将数组的每个组件传递给相同的序列化方法,而不论其类型如何。 有两种特殊情况:空引用和对原始数组的引用。 空引用将导致instanceof结果false,而isArray引发NullPointerException。 施加到一个原始阵列,所述instanceof产量false除非在右边的操作数完全相同的组件类型的组件类型相匹配。相反,isArray()将返回true任何组件类型 问题来源于stack overflow

保持可爱mmm 2020-01-16 17:49:44 0 浏览量 回答数 0

回答

在大多数情况下,应使用instanceof运算符测试对象是否为数组。 通常,您需要先测试对象的类型,然后再向下转换为编译时已知的特定类型。例如,也许您编写了一些可以使用Integer[]或的代码int[]。您想使用以下方法保护自己的演员instanceof: if (obj instanceof Integer[]) { Integer[] array = (Integer[]) obj; /* Use the boxed array / } else if (obj instanceof int[]) { int[] array = (int[]) obj; / Use the primitive array */ } else ... 在JVM级别,instanceof操作员将转换为特定的“ instanceof”字节代码,该代码在大多数JVM实现中都得到了优化。 在极少数情况下,您可能会使用反射遍历未知类型的对象图。在这种情况下,该isArray()方法可能会有所帮助,因为您在编译时不知道组件类型。例如,您可能正在实现某种序列化机制,并且能够将数组的每个组件传递给相同的序列化方法,而不论其类型如何。 有两种特殊情况:空引用和对原始数组的引用。 空引用将导致instanceof结果false,而isArray引发NullPointerException。 施加到一个原始阵列,所述instanceof产量false除非在右边的操作数完全相同的组件类型的组件类型相匹配。相反,isArray()将返回true任何组件类型。 问题来源于stack overflow

保持可爱mmm 2020-02-06 22:38:15 0 浏览量 回答数 0

回答

Array.isArray()

智珏 2019-12-02 00:52:52 0 浏览量 回答数 0

回答

Array.isArray(target)

智珏 2019-12-02 00:52:18 0 浏览量 回答数 0

回答

Array.isArray(a);

24k-xf 2019-12-02 00:53:55 0 浏览量 回答数 0

回答

要用 java.lang.reflect.Array 来处理数组,所以我把 if (value.getClass().isArray()) 那一代码给你改了 if (value.getClass().isArray()) { int length = Array.getLength(value); System.out.println(length); StringBuffer buffer = new StringBuffer(); buffer.append('['); for (int i = 0; i < length; i++) { Object v = Array.get(value, i).toString(); buffer.append(v == null ? "<null>" : v.toString()) .append(", "); } if (buffer.length() > 1) { // 大于 1 说明除了 '[' 外还有其它的,即数据不为空 buffer.delete(buffer.length() - 2, buffer.length()); } buffer.append(']'); val = buffer.toString(); System.out.println(val); }

蛮大人123 2019-12-02 02:06:11 0 浏览量 回答数 0

问题

js对象中自身声明的方法和属性与prototype声明的对象有什么差别?

a123456678 2019-12-01 20:20:54 1093 浏览量 回答数 1

回答

答案: 1.数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组 2.实现 var arr = [1, 2, [3, 4, 5, [6, 7, 8], 9], 10, [11, 12]]; a:递归实现 function fn(arr) { let arr1 = []; arr.forEach(val => { if (val instanceof Array) { arr1 = arr1.concat(fn(val)); } else { arr1.push(val); } }); return arr1; } b:reduce 实现 function fn(arr) { return arr.reduce((prev, cur) => { return prev.concat(Array.isArray(cur) ? fn(cur) : cur); }, []); } c:flat 参数为层数(默认一层) arr.flat(Infinity); d:扩展运算符 function fn(arr) { let arr1 = []; let bStop = true; arr.forEach(val => { if (Array.isArray(val)) { arr1.push(...val); bStop = false; } else { arr1.push(val); } }); if (bStop) { return arr1; } return fn(arr1); } e:toString let arr1 = arr .toString() .split(",") .map(val => { return parseInt(val); }); console.log(arr1); f:apply function flatten(arr) { while (arr.some(item => Array.isArray(item))) { arr = [].concat.apply([], arr); } return arr; }

kun坤 2019-12-02 03:23:00 0 浏览量 回答数 0

回答

Array.isArray(arr); arr instanceOf Array 如果没有iframe ,两种都可以,如果有用第一种

micro0 2019-12-02 00:53:18 0 浏览量 回答数 0

回答

function isArray(input) { return String.prototype.toString.call(input) === [object Array]}

ahonn 2019-12-02 00:53:53 0 浏览量 回答数 0

问题

Object.prototype.toString.call() 和 instanceOf 区别好坏

茶什i 2019-12-01 22:02:45 15 浏览量 回答数 1

回答

arrayToObject: function (arr) { if (!Array.isArray(arr)) { return {}; } const ret = {}; arr.forEach(o => { ret[o.userId] = o; }); return ret; },

钰姵1221 2019-12-02 00:55:10 0 浏览量 回答数 0

回答

第一种方法:使用 instanceof 操作符。 第二种方法:使用 ECMAScript 5 新增的 Array.isArray()方法。 第三种方法:使用使用 Object.prototype 上的原生 toString()方法判断。

茶什i 2019-12-02 03:18:19 0 浏览量 回答数 0

问题

有以下 3 个判断数组的方法,请分别介绍它们之间的区别和优劣 #前端面试

九旬 2020-05-23 13:51:16 9 浏览量 回答数 1

回答

有几种检查变量是否为数组的方法。最好的解决方案是您选择的解决方案。 variable.constructor === Array 这是Chrome上最快的方法,很可能是所有其他浏览器上的方法。所有数组都是对象,因此检查构造函数属性对于JavaScript引擎来说是一个快速的过程。 如果在确定对象属性是否为数组时遇到问题,则必须首先检查该属性是否存在。 variable.prop && variable.prop.constructor === Array 其他一些方法是: Array.isArray(variable) 更新2019年5月23日使用Chrome 75,喊出@AnduAndrici邀请我与他的问题重温这段 最后一项是,在我看来最丑陋的,它是对一个最慢的速度最快。作为第一个示例,运行速度约为1/5。这个家伙慢了大约2%到5%,但这很难说。牢固使用!结果给人留下了深刻的印象。Array.prototype实际上是一个数组。您可以在这里阅读有关它的更多信息https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray variable instanceof Array 作为第一个示例,此方法的运行速度约为1/3。如果您只关注漂亮的代码,而不是关注太多性能,那么它仍然很坚固,看上去更干净。请注意,检查数字并不variable instanceof Number总是返回false。更新:instanceof现在速度提高了2/3! 所以还有另一个更新 Object.prototype.toString.call(variable) === '[object Array]'; 这个家伙是最慢的尝试检查数组的人。但是,这是您要寻找的任何类型的一站式商店。但是,由于您要查找数组,因此请使用上面最快的方法。 另外,我进行了一些测试:http : //jsperf.com/instanceof-array-vs-array-isarray/35因此,请找点乐子并检查一下。 注意:由于jsperf.com关闭,@ EscapeNetscape创建了另一个测试。http://jsben.ch/#/QgYAV我想确保当jsperf再次联机时,原始链接保持不变。 问题来源于stack overflow

保持可爱mmm 2020-01-08 15:48:37 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SSL证书 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 2020中国云原生 阿里云云栖号