繁体   English   中英

如何更改内部元素和数组

[英]How can I change elements inside and array

我如何才能将“ arr”内部的"e"元素替换为change0

arr数组将是用户的输入,我需要更改它,无法预测哪个元素将为"e"

var arr = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"];

var change0 = 2

var change1 = 1

document.write(arr);

您可以使用map()方法,这将返回新的更新数组并保存原始数组。

 var arr = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"]; var change0 = 2; var result = arr.map(e => e == 'e' ? change0 : e); console.log(result) 

您可以使用joinsplit方法执行此操作。

 var replace="change0"; var arr = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"]; console.log(arr.join().split('e').join(replace).split(',')); 

运行循环以获取元素“ e”的索引,然后重复进行,直到剩下更多元素:

 var arr = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"]; while (arr.indexOf("e") > 0){ var index = arr.indexOf("e"); arr[index] = "change0"; } document.write(arr); 

您可以使用Array#indexOf并搜索所有元素,然后更改给定值。

 var array = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"], search = "e", change = 2, p = array.indexOf(search); while (p !== -1) { array[p] = change; p = array.indexOf(search, p + 1); } console.log(array); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

您可以使用indexOf确定数组中元素的索引。 因此,基本上,您可以像这样去:

arr[arr.indexOf('e')] = change0;

如果您有多个具有'e'值的元素,则它将不起作用。 它只会更改第一个,因此您必须将其循环。 或使用地图。

使用forEach

 var arr = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"]; var change = "changed"; arr.forEach(function(v, i) { if(v === "e") arr[i] = change; }); console.log(arr); 

  1. 转换为字符串
  2. 替换“ e”
  3. 转换回数组

 var arr = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"]; console.log((((arr.toString()).replace(/e/g,"changed"))).split(',')); 

如果您打算处理多个字母,最好事先准备编码器/解码器(一个函数或一个数组)。 然后您的工作变得简单:

output = input.map(val => encoder[val] || val);

|| val || val部分用于编码器未处理的值。

工作实例

在此示例中,我们使用split("")将字符串转换为数组,并使用join("")进行相反的操作。

 PrepareCodec: var Latin = "abcdefghijklmnoprstuvyzABCDEFGHIJKLMNOPRSTUVYZ"; var Cyrillic = "абцдефгхийклмнопрстувызАБЦДЕФГХИЙКЛМНОПРСТУВЫЗ"; var encoder = {}, decoder = {}; for (let i in Latin) encoder[Latin[i]] = Cyrillic[i]; for (let i in Cyrillic) decoder[Cyrillic[i]] = Latin[i]; EncryptionTest: var src = prompt("Enter text to encrypt:", "Hello, world!"); var enc = src.split("").map(val => encoder[val] || val).join(""); DecryptionTest: enc = prompt("Enter text to decrypt:", enc); var dec = enc.split("").map(val => decoder[val] || val).join(""); FinalResult: prompt("Decrypted text:", dec); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM