Как заменить элемент в массиве на Javascript?



каждый элемент этого массива является некоторым числом.



var items = Array(523,3452,334,31, ...5346);


Как заменить некоторое число в массиве на новое?



например, мы хотим заменить 3452 на 1010, как бы мы это сделали?

511   11  

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; });

используйте indexOf для поиска элемента.

var i = items.indexOf(3452);
items[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

    Ничего не найдено.