如何在Javascript或jQuery中检查对象或变量是否可以移动?
可遍历的对象或变量必须在中适用于jQuery中的每个,如object.forEach()
和$.each(object, callback)
。
实际上我想验证它,然后在每个循环中使用它。
更新
我寻找的解决方案是这样的:
if(is_traversable($var)) {
$var.forEach(function(value, key) {
console.log(value);
}
}
你可以给我一个is_traversable()
函数的实现。
答案 0 :(得分:1)
对于数组,请使用Array.isArray()
,对于对象,您可以先检查null
,typeof
等于'object'
。
它想要的功能:
var isTraversable = o => Array.isArray(o) || o !== null && typeof o === 'object';
console.log(isTraversable()); // false
console.log(isTraversable(undefined)); // false
console.log(isTraversable(null)); // false
console.log(isTraversable('')); // false
console.log(isTraversable(0)); // false
console.log(isTraversable('a')); // false
console.log(isTraversable(42)); // false
console.log(isTraversable(/./)); // false
console.log(isTraversable([])); // true
console.log(isTraversable([1])); // true
console.log(isTraversable({})); // true
console.log(isTraversable({ a: /./ })); // true
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
您可以使用以下内容并创建适当的功能/验证:
var myArray = ["This is a test"];
var myObject = {"test" : "This is a test"};
if( Object.prototype.toString.call( myArray ) === '[object Array]' ) {
alert( 'Array!' );
}
if( Object.prototype.toString.call( myObject ) === '[object Object]' ) {
alert( 'Object!' );
}
看看这个:Object.toString
答案 2 :(得分:0)
forEach
和朋友以通用方式实施,符合条件,他们的论点
[]
)length
属性。也就是说,任何字符串和.length
的任何对象都可以工作:
isIterable = x => x && !isNaN(x.length);
请注意,for..of
与forEach
不同,它明确要求参数为Symbol.iterator
。
a = {
length: 10,
5: 555
};
[].forEach.call(a, x => console.log(x)); // fine
for(var x of a) console.log(x); // no way

答案 3 :(得分:0)
items
可能是Array
Object
,variable
示例强>
items = [1,2,3,4]; 或 items = {name:' abc',email:' abc@xyz.com'}
var items;
if (items && items instanceof Array) { // if Array
items.forEach(function(value) {
console.log(value);
});
} else if (items && items instanceof Object) { // if Object
for (key in items) {
console.log(items[keys]);
}
} else { // if variable
console.log(items);
}