Kode di bawah ini berasal dari jQuery UI Autocomplete:
var projects = [
{
value: "jquery",
label: "jQuery",
desc: "the write less, do more, JavaScript library",
icon: "jquery_32x32.png"
},
{
value: "jquery-ui",
label: "jQuery UI",
desc: "the official user interface library for jQuery",
icon: "jqueryui_32x32.png"
},
{
value: "sizzlejs",
label: "Sizzle JS",
desc: "a pure-JavaScript CSS selector engine",
icon: "sizzlejs_32x32.png"
}
];
Misalnya, saya ingin mengubah desc dari jquery-ui . Bagaimana saya bisa melakukan itu?
Selain itu, adakah cara yang lebih cepat untuk mendapatkan data? Maksud saya memberi nama objek untuk mengambil datanya, sama seperti objek di dalam array? Jadi itu akan menjadi sesuatu sepertijquery-ui.jquery-ui.desc = ....
javascript
jquery
arrays
qinHaiXiang
sumber
sumber
projects["jquery-ui"].desc
. Apakah itu sepadan dengan usaha hanya untuk mendapatkan sintaksis yang lebih bagus?Jawaban:
Anda harus mencari di dalam array seperti:
dan menggunakannya seperti
MEMPERBARUI:
Untuk mendapatkannya lebih cepat:
(Menurut komentar Frédéric Anda tidak boleh menggunakan tanda hubung pada kunci objek, atau Anda harus menggunakan notasi "jquery-ui" dan proyek ["jquery-ui"].)
sumber
-
pada nama objek. Anda harus menulis"jquery-ui": {}
danprojects["jquery-ui"].desc
masing - masing.Cukup sederhana
findIndex
metode.yourArray[indexThatyouFind]
sumber
()
padafindIndex
metode ini?[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], myArray.slice(objIndex + 1))]
[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], ...myArray.slice(objIndex + 1))]
? Saya pikir kamu kehilangan elips kedua.Cara ES6 , tanpa bermutasi data asli.
sumber
Solusi terbaik, terima kasih kepada ES6.
Ini mengembalikan array baru dengan deskripsi yang diganti untuk objek yang berisi nilai sama dengan "jquery-ui".
sumber
Anda dapat menggunakan $ .each () untuk beralih ke array dan menemukan objek yang Anda minati:
sumber
Menggunakan peta adalah solusi terbaik tanpa menggunakan perpustakaan tambahan. (Menggunakan ES6)
sumber
Ini dapat dengan mudah dilakukan dengan garis bawah / lodash library:
Documents:
https://lodash.com/docs#find
https://lodash.com/docs#merge
sumber
.value()
Anda dapat menggunakan .find dalam contoh Anda
sumber
Anda perlu tahu indeks objek yang Anda ubah. maka itu cukup sederhana
sumber
Saya pikir cara ini lebih baik
sumber
findIndex
Anda memberikan nilai alih-alih membandingkanmengingat data berikut, kami ingin mengganti beri dalam
summerFruits
daftar dengan semangka .Dua cara Anda bisa melakukan ini.
Pendekatan pertama:
Pendekatan kedua: menggunakan
map
, danspread
:summerFruitsCopy
daftar sekarang akan mengembalikan array dengan objek yang diperbarui.sumber
sumber
...
sebelum proyek diperlukan?...
dikenal sebagai operator spread. google it :)Ini adalah jawaban lain yang melibatkan
find
. Ini bergantung pada kenyataan bahwafind
:Berikut cuplikan penting Javascript:
Ini versi alternatif dari Javascript yang sama:
Berikut ini versi yang lebih pendek (dan agak lebih jahat):
Ini versi lengkapnya:
sumber
Anda dapat menggunakan fungsi peta -
sumber
Coba kode ini. menggunakan fungsi jQuery grep
sumber
Kita juga dapat menggunakan fungsi peta Array untuk memodifikasi objek array menggunakan Javascript.
sumber
Temukan indeks terlebih dahulu:
Kemudian:
Kemudian lakukan apa yang Anda inginkan dengan indeks ini, seperti:
$ scope [returnsindex] .someKey = "someValue";
Catatan: tolong jangan gunakan untuk, karena untuk akan memeriksa semua dokumen array, gunakan sementara dengan stopper, jadi akan berhenti setelah ditemukan, sehingga kode lebih cepat.
sumber
Di sini saya menggunakan js sudut. Dalam javascript, Anda dapat menggunakan loop untuk menemukan.
sumber
untuk memperbarui beberapa item dengan penggunaan yang cocok:
sumber
Ini tanggapan saya terhadap masalah tersebut. Versi garis bawah saya adalah 1,7 sehingga saya tidak bisa menggunakan
.findIndex
.Jadi saya secara manual mendapatkan indeks item dan menggantinya. Berikut adalah kode yang sama.
Metode di bawah ini akan menggantikan siswa
id:4
dengan lebih banyak atribut di objek}
Dengan garis bawah 1.8 itu akan disederhanakan karena kami memiliki metode
_.findIndexOf
.sumber
Biarkan Anda ingin memperbarui nilai
array[2] = "data"
sumber
sumber