Код ниже взят из 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"
}
];
Например, я хочу изменить значение desc для jquery-ui . Как я могу это сделать?
Кроме того, есть ли более быстрый способ получить данные? Я имею в виду дать объекту имя для извлечения его данных, как объект внутри массива? Так было бы что-то вродеjquery-ui.jquery-ui.desc = ....
javascript
jquery
arrays
qinHaiXiang
источник
источник
projects["jquery-ui"].desc
. Это стоило бы усилий только, чтобы получить более хороший синтаксис?Ответы:
Вы должны искать в массиве, как:
и использовать его как
ОБНОВИТЬ:
Чтобы получить это быстрее:
(В соответствии с комментарием Фредерика вы не должны использовать дефис в ключе объекта, или вы должны использовать нотацию "jquery-ui" и projects ["jquery-ui"].)
источник
-
в имени объекта. Тебе придется написать"jquery-ui": {}
иprojects["jquery-ui"].desc
соответственно.Это довольно просто
findIndex
метода.yourArray[indexThatyouFind]
источник
()
поfindIndex
методу?[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], myArray.slice(objIndex + 1))]
[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], ...myArray.slice(objIndex + 1))]
? Я думаю, что вам не хватает второго эллипса.ES6 кстати, без мутации оригинальных данных.
источник
Лучшее решение благодаря ES6.
Это возвращает новый массив с замененным описанием для объекта, который содержит значение, равное «jquery-ui».
источник
Вы можете использовать $ .each (), чтобы перебрать массив и найти интересующий вас объект:
источник
Использование карты - лучшее решение без использования дополнительных библиотек. (Использование ES6)
источник
Это легко сделать с помощью библиотеки подчеркивания / lodash:
Документы:
https://lodash.com/docs#find
https://lodash.com/docs#merge
источник
.value()
вы можете использовать .find так в вашем примере
источник
вам нужно знать индекс объекта, который вы меняете. тогда это довольно просто
источник
Я думаю, что так лучше
источник
findIndex
вы присваиваете значение вместо сравненияучитывая следующие данные, мы хотим заменить ягоды в
summerFruits
списке арбузом .Это можно сделать двумя способами.
Первый подход:
Второй подход: использование
map
иspread
:summerFruitsCopy
list теперь будет возвращать массив с обновленным объектом.источник
Это еще один ответ с участием
find
. Это зависит от того, чтоfind
:Вот критический фрагмент Javascript:
Вот альтернативная версия того же Javascript:
Вот еще более короткая (и несколько более злая версия):
Вот полная рабочая версия:
источник
источник
...
раньше проекты нужны?...
известен как оператор распространения. Google это :)Вы можете использовать функцию карты -
источник
попробуйте использовать
forEach(item,index)
помощникисточник
Попробуйте этот код. он использует функцию JQuery grep
источник
Мы также можем использовать функцию карты Array для изменения объекта массива с использованием Javascript.
источник
Сначала найдите индекс:
Затем:
Затем делайте что хотите с этим индексом, например:
$ scope [returnindex] .someKey = "someValue";
Примечание: пожалуйста, не используйте for, так как for проверит все документы массива, используйте while со стопором, поэтому он остановится, как только будет найден, таким образом, более быстрый код.
источник
Здесь я использую угловой JS. В JavaScript вы можете использовать для цикла, чтобы найти.
источник
чтобы обновить несколько элементов с использованием совпадений:
источник
Это мой ответ на проблему. Моя версия подчеркивания была 1.7, поэтому я не мог использовать
.findIndex
.Поэтому я вручную получил индекс предмета и заменил его. Вот код для того же.
Приведенный ниже метод заменит учащегося
id:4
на большее количество атрибутов объекта.}
Подчеркивание 1.8 будет упрощено, так как у нас есть методы
_.findIndexOf
.источник
Пусть вы хотите обновить значение
array[2] = "data"
источник
источник