Каждый элемент этого массива - это некоторое число.
var items = Array(523,3452,334,31, ...5346);
Как заменить некоторое число с помощью массива на новый?
Например, мы хотим заменить 3452 на 1010, как мы это сделаем?
Каждый элемент этого массива - это некоторое число.
var items = Array(523,3452,334,31, ...5346);
Как заменить некоторое число с помощью массива на новый?
Например, мы хотим заменить 3452 на 1010, как мы это сделаем?
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
}
Метод 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.splice(1, 1, 1010);
Операция объединения удалит 1 элемент, начиная с позиции 1 в массиве (т. 3452
), и заменит его новым элементом 1010
.
Вы можете редактировать любое количество списков с помощью индексов
например:
items[0] = 5;
items[5] = 100;
Если вы используете сложный объект (или даже простой), и вы можете использовать es6, Array.prototype.findIndex
является хорошим. Для массива OP они могли бы сделать,
const index = items.findIndex(x => x === 3452)
items[index] = 1010
Для более сложных объектов это действительно светит. Например,
const index =
items.findIndex(
x => x.jerseyNumber === 9 && x.school === 'Ohio State'
)
items[index].lastName = 'Utah'
items[index].firstName = 'Johnny'
Замена может быть выполнена в одну строку:
var items = Array(523, 3452, 334, 31, 5346);
items[items.map((e, i) => [i, e]).filter(e => e[1] == 3452)[0][0]] = 1010
console.log(items);
Самый простой способ - использовать некоторые библиотеки, такие как 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);
для получения дополнительной информации о . splice
Используя 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>
Неизменный способ замены элемента в списке с использованием операторов распространения .slice
метода .slice
.
const arr = ['fir', 'next', 'third'], item = 'next'
const nextArr = [
...arr.slice(0, arr.indexOf(item)),
'second',
...arr.slice(arr.indexOf(item) + 1)
]
Убедитесь, что работает
console.log(arr) // [ 'fir', 'next', 'third' ]
console.log(nextArr) // ['fir', 'second', 'third']
Сначала перепишите свой массив следующим образом:
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;
Вот основной ответ, превращенный в функцию многократного использования:
function arrayFindReplace(array, findValue, replaceValue){
while(array.indexOf(findValue) !== -1){
let index = array.indexOf(findValue);
array[index] = replaceValue;
}
}
Я решил эту проблему, используя циклы for и перебирая исходный массив и добавляя позиции соответствующих массивов в другой массив, а затем перебирая этот массив и изменяя его в исходном массиве, затем возвращая его, я использовал функцию стрелки, но обычную функцию будет работать тоже.
var replace = (arr, replaceThis, WithThis) => {
if (!Array.isArray(arr)) throw new RangeError("Error");
var itemSpots = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == replaceThis) itemSpots.push(i);
}
for (var i = 0; i < itemSpots.length; i++) {
arr[itemSpots[i]] = WithThis;
}
return arr;
};
И почему бы не просто: (JSON.stringify(arr1) === JSON.stringify(arr2))
Протестировано в консоли браузера: a2 = [1,2] a1 = [0,2] (JSON.stringify(a2) !== JSON.stringify(a1)) true a1 = [1,2] (JSON.stringify(a2) !== JSON.stringify(a1)) false
var index = Array.indexOf(Array value);
if (index > -1) {
Array.splice(index, 1);
}
отсюда вы можете удалить определенное значение из массива и на основе того же индекса Вы можете вставить значение в массиве.
Array.splice(index, 0, Array value);
presentPrompt(id,productqty) {
let alert = this.forgotCtrl.create({
title: 'Test',
inputs: [
{
name: 'pickqty',
placeholder: 'pick quantity'
},
{
name: 'state',
value: 'verified',
disabled:true,
placeholder: 'state',
}
],
buttons: [
{
text: 'Ok',
role: 'cancel',
handler: data => {
console.log('dataaaaname',data.pickqty);
console.log('dataaaapwd',data.state);
for (var i = 0; i < this.cottonLists.length; i++){
if (this.cottonLists[i].id == id){
this.cottonLists[i].real_stock = data.pickqty;
}
}
for (var i = 0; i < this.cottonLists.length; i++){
if (this.cottonLists[i].id == id){
this.cottonLists[i].state = 'verified';
}
}
//Log object to console again.
console.log("After update: ", this.cottonLists)
console.log('Ok clicked');
}
},
]
});
alert.present();
}
As per your requirement you can change fields and array names.
thats all. Enjoy your coding.
Самый простой способ это.
var items = Array(523,3452,334,31, 5346);
var replaceWhat = 3452, replaceWith = 1010;
if (i = items.indexOf(replaceWhat)) items.splice(i, 1, replaceWith);
console.log(items);
>>> (5) [523, 1010, 334, 31, 5346]