11 ответов:
var index = items.indexOf(3452); if (index !== -1) { items[index] = 1010; }также рекомендуется не использовать метод конструктора для инициализации массивов. Вместо этого используйте литеральный синтаксис:
var items = [523, 3452, 334, 31, 5346];вы также можете использовать
~оператор, если вы находитесь в кратком JavaScript и хотите сократить-1для сравнения:var index = items.indexOf(3452); if (~index) { items[index] = 1010; }иногда мне даже нравится писать
containsфункция, чтобы абстрагировать эту проверку и сделать его легче понять, что происходит. Что удивительно, это работает на массивах и строках оба:var contains = function (haystack, needle) { return !!~haystack.indexOf(needle); }; // can be used like so now: if (contains(items, 3452)) { // do something else... }начиная с ES6/ES2015 для строк и предложенного для ES2016 для массивов, вы можете более легко определить, содержит ли источник другое значение:
if (haystack.includes(needle)) { // do your thing }
The
Array.indexOf()метод заменит первый экземпляр. Чтобы получить каждый экземпляр используйтеArray.map():a = a.map(function(item) { return item == 3452 ? 1010 : item; });конечно, это создает новый массив. Если вы хотите сделать это, используйте
Array.forEach():a.forEach(function(item, i) { if (item == 3452) a[i] = 1010; });
легко выполняется с помощью
forпетли.for (var i = 0; i < items.length; i++) if (items[i] == 3452) items[i] = 1010;
вы можете редактировать любое количество из списка с помощью индексов
например :
items[0] = 5; items[5] = 100;
самый простой способ-это использовать некоторые библиотеки, такие как underscorejs и способ карте.
var items = Array(523,3452,334,31,...5346); _.map(items, function(num) { return (num == 3452) ? 1010 : num; }); => [523, 1010, 334, 31, ...5346]
var items = Array(523,3452,334,31,5346);если вы знаете значение, а затем использовать
items[items.indexOf(334)] = 1010;если вы хотите знать, что значение присутствует или нет, а затем использовать
var point = items.indexOf(334); if (point !== -1) { items[point] = 1010; }если вы знаете место (положение), то сразу используйте,
items[--position] = 1010;если вы хотите заменить несколько элементов, и вы знаете только начальное положение только означает,
items.splice(2, 1, 1010, 1220);подробнее о .сращивание
во-первых, перепишите свой массив следующим образом:
var items = [523,3452,334,31,...5346];далее, доступ к элементу массива по его порядковому номеру. Формула для определения номера индекса:
n-1для замены первого элемента
(n=1)в массиве, пишем:items[0] = Enter Your New Number;в вашем примере, количество
3452находится на второй позиции(n=2). Таким образом, формула для определения индекса составляет2-1 = 1. Поэтому напишите следующий код для замены3452С1010:items[1] = 1010;
используя jQuery, это может быть легко:
var items = Array(523,3452,334,31,5346); var val = 3452; // we want to replace this var index = $.inArray(val, items); // get index of specific value items[index] = 1010; // execute! alert(items);<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
вот основной ответ в отдельную функцию:
function arrayFindReplace(array, findValue, replaceValue){ while(array.indexOf(findValue) !== -1){ let index = array.indexOf(findValue); array[index] = replaceValue; } }
мое предлагаемое решение:
предметы.соединения(1,1,1010)
объяснение: Операция соединения удалит 1 элемент, начиная с позиции 1 в массиве (т. е. 3452), и заменит его новым элементом (1010).
Comments