Bagaimana saya harus mendeteksi jika argumennya adalah array karena typeof []
mengembalikan 'object'
dan saya ingin membedakan antara array dan objek.
Mungkin saja objek itu akan terlihat seperti itu {"0":"string","1":"string","length":"2"}
tetapi saya tidak ingin itu keluar sebagai array jika sebenarnya itu adalah objek yang tampak seperti array.
JSON.parse
dan JSON.stringify
mampu membuat perbedaan ini. Bagaimana saya bisa melakukannya?
Saya menggunakan Node.JS yang didasarkan pada V8 sama dengan Chrome.
util
pustaka node.js -require('util').isArray(arr)
nodejs.org/api/util.html#util_util_isarray_objectarr instanceof Array
gagal. NamunArray.isArray()
pekerjaannya bagus.Coba kode ini:
Array.isArray(argument)
sumber
Bagaimana tentang:
your_object instanceof Array
Di V8 di Chrome saya dapatkan
[] instanceof Array > true ({}) instanceof Array > false ({"0":"string","1":"string","length":"2"}) instanceof Array > false
sumber
Sepertinya pertanyaan ini memiliki beberapa jawaban yang bagus, tetapi untuk kelengkapan saya akan menambahkan opsi lain, yang belum pernah disarankan sebelumnya.
Untuk memeriksa apakah ada sesuatu yang berupa array, Anda dapat menggunakan
util
modul native Node.js danisArray()
fungsinya.Contoh:
var util = require('util'); util.isArray([]); // true util.isArray(new Array); // true util.isArray({"0":"string","1":"string","length":"2"}); // false
Dengan metode itu Anda tidak perlu khawatir tentang standar JS yang diterapkan oleh V8 karena akan selalu menampilkan jawaban yang benar.
sumber
util.isArray()
saat ini mewakiliArray.isArray()
: github.com/joyent/node/blob/…Coba cara ini:
console.log (Object.prototype.toString.call (arg) .replace (/ ^ [object (. +)] $ /, '$ 1'). ToLowerCase ())
sumber