/ / Jak sprawdzić, czy obiekt lub var jest przetwarzalny w JavaScript? - javascript, jquery, traverseable

Jak sprawdzić, czy obiekt lub var jest przetwarzalny w JavaScript? - javascript, jquery, traverseable

Jak mogę sprawdzić obiekt lub zmienną można przechodzić w JavaScript lub jQuery?

Obiekt lub zmienna, która jest traversalable, musi działać dla każdego lubić object.forEach() i $.each(object, callback) w jQuery.

Właściwie chcę to sprawdzić, a następnie użyć go w każdej pętli.

Aktualizacja:

Rozwiązanie, którego szukam, wygląda mniej więcej tak:

if(is_traversable($var)) {
$var.forEach(function(value, key) {
console.log(value);
}
}

I możesz dać mi wdrożenie is_traversable() funkcjonować.

Odpowiedzi:

1 dla odpowiedzi № 1

W przypadku tablic użyj Array.isArray() i dla przedmiotów, możesz najpierw sprawdzić nie null i typeof jest równe "object".

Pożądana funkcja dla niego:

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


0 dla odpowiedzi nr 2

Możesz użyć poniższych i utworzyć odpowiednie funkcje / sprawdzenia:

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!" );
}

Sprawdź ten: Object.toString


0 dla odpowiedzi № 3

forEach a przyjaciele są wprowadzani w ogólny sposób, aby się kwalifikować, ich argument

  • musi wspierać operatora pobierającego ([])
  • i musi mieć numeryczny length własność.

Oznacza to, że dowolny ciąg i dowolny obiekt z .length będzie działać:

isIterable = x => x && !isNaN(x.length);

Zauważ, że for..of jest inny niż forEachjednoznacznie wymaga argumentu 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


0 dla odpowiedzi nr 4

items może być Array Object, variable

Przykład

items = [1,2,3,4]; lub 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);
}