Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换阵列中的多个元素,同时保持其位置_Javascript_Arrays_Replace - Fatal编程技术网

Javascript 替换阵列中的多个元素,同时保持其位置

Javascript 替换阵列中的多个元素,同时保持其位置,javascript,arrays,replace,Javascript,Arrays,Replace,大家好,我对javascript还很陌生,所以我寻求你们的帮助。 我的问题如下: 如果有一个数组 var arr1 = ["a", "b", "a" "c"]; 我想找到每个“a”并用另一个数组的某个元素替换 var arr2 = [1, 2, 3, 4, 5, 6,]; 现在我如何用arr2的第一个元素替换每个“a”? 每个“b”都带有第二个,依此类推 这有可能吗?保持位置?可以使用对象将每个字符与特定整数关联:obj: const obj = {a:1, b:2,

大家好,我对
javascript
还很陌生,所以我寻求你们的帮助。 我的问题如下:

如果有一个数组

     var arr1 = ["a", "b", "a" "c"];
我想找到每个“a”并用另一个数组的某个元素替换

     var arr2 = [1, 2, 3, 4, 5, 6,];  
现在我如何用arr2的第一个元素替换每个“a”? 每个“b”都带有第二个,依此类推


这有可能吗?保持位置?

可以使用对象将每个字符与特定整数关联:
obj

const obj = {a:1, b:2, c:3, d:4, e:5, f:6};
arr1.map(e => obj[e])
然后使用该方法将数组
arr1
与辅助对象
obj
重新映射:

const obj = {a:1, b:2, c:3, d:4, e:5, f:6};
arr1.map(e => obj[e])
该方法创建一个新数组,其结果是对调用数组中的每个元素调用提供的函数

const arr1=[“a”、“b”、“a”、“c”];
常量obj={a:1,b:2,c:3,d:4,e:5,f:6};
console.log(
arr1.map(e=>obj[e])

)
您可以采用动态方法,连续构建一个哈希表并获取该值

var array1=[“a”、“b”、“a”、“c”],
array2=[1,2,3,4,5,6],
hash=Object.create(null),
指数=0;
result=array1.map(散列中的v=>v?散列[v]:散列[v]=array2[index++]);
控制台日志(结果)这可能会帮助您:

var arr1=[“a”、“b”、“a”、“c”、“f”];
var arr2=[1,2,3,4];
//打印阵列
控制台日志(“arr1:”,arr1);
控制台日志(“arr2:”,arr2);
//循环通过arr1
var i;
//循环直到达到阵列1的长度。
对于(i=0;i
您可以使用从
arr1
中的字符生成索引,如下所示:

let indices = arr1.map(str => parseInt(str, 36) - 10);
parseInt
的第二个参数是基数,36允许使用
0-9
a-z
指定数字。因为
a=10
我们需要减去10以获得适当的索引(
a
->索引
0

然后使用这些索引从
arr2
中获得相应的元素:

let result = indices.map(index => arr1[index]);
一个简短的例子:

让arr1=['a','b','a','c'],
arr2=[1,2,3,4,5,6],
result=arr1.map(s=>parseInt(s,36)-10.map(i=>arr2[i]);

控制台日志(结果)您可以创建
arr1
的字符串表示形式并替换字符:

var arr1=[“a”、“b”、“a”、“c”];
var arr2=[1,2,3,4,5,6,6];
var str=arr1.join(',');
arr2.forEach((编号、索引)=>{
var字符=arr1[索引];
if(字符&&isNaN(arr1[index])){
var re=新的RegExp(字符“g”);
str=str.replace(re,编号);
}
});
arr1=str.split(',');
控制台日志(arr1)以下是我(更简单)的答案:

var arr1=[“a”、“b”、“a”、“c”];
//我想找到并替换每个“a”
//与另一个数组的某个元素
var arr2=[1,2,3,4,5,6,6];
用于(arr1中的var i){
arr1[i]=arr2[arr1[i].charCodeAt(0)-97];
}
log('arr1现在为:['+arr1+']')
var arr1=[“a”、“b”、“a”、“c”];
var arr2=[1,2,3,4,5,6];
var uniqueItems=Array.from(新集合(arr1));

对于(i=0;iso),结果数组应该如下所示
[1,2,1,3]
?不清楚“a”“b”与1和2@RicardoPontual是的,它应该是这样的。@epascarello我定义它是如何关联的,但是如果我替换所有的“a”也很好s带有变量。您是否尝试过编写代码来完成此任务?如果您希望调试帮助更简单,但只能处理单个字母,请发布此代码。这就是问题所在。如果是数字,则代码会有所不同。:-)