如何更改内部和数组中的元素

时间:2017-04-16 10:58:46

标签: javascript arrays

如何将“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);

8 个答案:

答案 0 :(得分:2)

您可以使用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)




答案 1 :(得分:2)

您可以使用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(','));




答案 2 :(得分:1)

运行循环以获取元素的索引" 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);




答案 3 :(得分:1)

您可以使用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; }




答案 4 :(得分:1)

您可以使用indexOf来确定数组中元素的索引。所以基本上,你可以这样:

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

如果您有多个元素的值为' e'它将无效。它只会改变第一个,所以你必须通过一个循环。或者使用地图。

答案 5 :(得分:1)

使用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);

答案 6 :(得分:1)

  1. 转换为字符串
  2. 替换' e'
  3. 转换回数组
  4. 
    
    var arr = [ "a", "b", "c", "d", "e", "f", "g", "h", "e", "j", "e"];
    
    console.log((((arr.toString()).replace(/e/g,"changed"))).split(','));
    
    
    

答案 7 :(得分:0)

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

output = input.map(val => encoder[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);