Aplikasi saya membuat objek JavaScript, seperti berikut ini:
myObj= {1:[Array-Data], 2:[Array-Data]}
Tapi saya butuh objek ini sebagai array.
array[1]:[Array-Data]
array[2]:[Array-Data]
Jadi saya mencoba untuk mengkonversi objek ini ke array dengan mengulangi $.each
melalui objek dan menambahkan elemen ke array:
x=[]
$.each(myObj, function(i,n) {
x.push(n);});
Apakah ada cara yang lebih baik untuk mengonversi objek ke array atau mungkin fungsi?
javascript
jquery
arrays
object
Bndr
sumber
sumber
myObj= {1:[Array-Data]
kemyObj= {0:[Array-Data]
bukan bagian dari suntingan Anda (seperti yang saya ingat benar)Jawaban:
Keluaran:
sumber
$.map
? Setiap pencarian yang saya coba lakukan pada ini hanya menghasilkan banyak tautan ke jQuery atau metode peta array.value.key = index; return [value];
sebagai gantireturn [value];
Jika Anda mencari pendekatan fungsional:
Hasil dalam:
Sama dengan fungsi panah ES6:
Dengan ES7 Anda akan dapat menggunakan
Object.values
( informasi lebih lanjut ):Atau jika Anda sudah menggunakan Underscore / Lo-Dash:
sumber
Saya pikir Anda dapat menggunakan
for in
tetapi memeriksa apakah properti tidak inerithedEDIT - jika Anda mau, Anda juga bisa menyimpan indeks objek Anda, tetapi Anda harus memeriksa apakah itu numerik (dan Anda mendapatkan nilai yang tidak ditentukan untuk indeks yang hilang:
sumber
$.map
akan rataArray-Data
.[{1:[Array-Data], 2:[Array-Data]}]
Dan$.map()
juga tidak terlihat berhasil. Terlihat bahwa semua data Sub-Array digabung menjadi satu larik.array.length
harus mengembalikan 2 (karena 2 elemen ada), tetapi mengembalikan 67 yang merupakan jumlah semua elemen dalam semua ["Array-Data"].arr[+i] = myObj[i];
karena (i)for(...in...)
tidak dijamin untuk mengembalikan properti dalam urutan apa pun (ii) dalam contoh OP properti mulai dari 1, bukan 0.Lakukan saja
Itu saja!
sumber
Jika Anda tahu indeks maksimum di objek Anda, Anda dapat melakukan hal berikut:
sumber
myObj.length = Object.keys(myObj).length
Karena ES5 Object.keys () mengembalikan array yang berisi properti yang didefinisikan langsung pada objek (tidak termasuk properti yang didefinisikan dalam rantai prototipe):
ES6 membawanya selangkah lebih maju dengan fungsi panah:
sumber
Saat ini, ada cara sederhana untuk melakukan ini: Object.values () .
Keluaran:
Ini tidak diperlukan jQuery, sudah didefinisikan dalam ECMAScript 2017.
Ini didukung oleh setiap browser modern (lupakan IE).
sumber
var state = { ingredient: { salad: 1, bacon: 1, } }
dan kemudianvar HariOm = Object.values(state);
diikuticonsole.log(typeof HariOM)
itu menampilkan tipe sebagai objek. Tidakkah seharusnya menampilkannya sebagai array?Array.isArray(HariOM)
Metode terbaik adalah menggunakan fungsi javascript -hanya:
sumber
var myObj = {1:[1,2,3],2:[4,5,6]};
sumber
var bbb = {'1': 'a', '3': 'b'}; var x = []; for (var i in bbb) { x[parseInt(i)] = bbb[i];} console.log(x);
ECMASCRIPT 5:
ECMASCRIPT 2015 atau ES6:
sumber
Bagaimana tentang
jQuery.makeArray(obj)
Ini adalah bagaimana saya melakukannya di aplikasi saya.
sumber
Pemecahannya sangat sederhana
sumber
Cara ES8 menjadi mudah :
Dokumentasi resmi
sumber
Fiddle Demo
Perluasan untuk menjawab bjornd .
Referensi
Array.prototype.slice ()
Function.prototype.apply ()
Object.prototype.hasOwnProperty ()
Object.keys ()
sumber
Jika Anda ingin menyimpan nama properti objek sebagai nilai. Contoh:
Gunakan
Object.keys()
,Array.map()
danObject.assign()
:Hasil:
Penjelasan:
Object.keys()
menyebutkan semua properti dari sumber;.map()
menerapkan=>
fungsi untuk setiap properti dan mengembalikan Array;Object.assign()
menggabungkan nama dan nilai untuk setiap properti.sumber
Saya membuat fungsi khusus:
sumber
Setelah beberapa tes, berikut ini adalah objek umum untuk fungsi array konverter:
Anda memiliki objek:
Fungsi:
Fungsi Gunakan:
Anda mendapatkan:
Jadi, Anda dapat menjangkau semua kunci & nilai seperti:
Hasil di konsol:
Edit:
Atau dalam bentuk prototipe:
Dan kemudian gunakan seperti:
sumber
Anda dapat membuat fungsi sederhana untuk melakukan konversi dari
object
kearray
, sesuatu seperti ini dapat melakukan pekerjaan untuk Anda menggunakan javascript murni:atau yang ini:
dan panggil dan gunakan fungsi seperti di bawah ini:
Juga di masa depan kami akan memiliki sesuatu yang disebut
Object.values(obj)
, mirip denganObject.keys(obj)
yang akan mengembalikan semua properti untuk Anda sebagai array, tetapi belum didukung di banyak browser ...sumber