Javascript/Typescript从一个嵌套数组更新另一个嵌套数组中的数据

Javascript/Typescript从一个嵌套数组更新另一个嵌套数组中的数据,javascript,arrays,typescript,Javascript,Arrays,Typescript,我的初始数组如下所示: preData = [ ['APP_NOT_RUNNING', 0], ['FALLBACK', 0], ['IDLE', 0], ['OUTOFSERVICE', 0] ]; preData = [ ['APP_NOT_RUNNING', 2], ['IDLE', 3], ]; 具有值的数组如下所示: preData = [ ['APP_NOT_RUNNING', 0], ['FALLBACK',

我的初始数组如下所示:

 preData = [
    ['APP_NOT_RUNNING', 0],
    ['FALLBACK', 0],
    ['IDLE', 0],
    ['OUTOFSERVICE', 0]
];
preData = [
    ['APP_NOT_RUNNING', 2],
    ['IDLE', 3],
];
具有值的数组如下所示:

 preData = [
    ['APP_NOT_RUNNING', 0],
    ['FALLBACK', 0],
    ['IDLE', 0],
    ['OUTOFSERVICE', 0]
];
preData = [
    ['APP_NOT_RUNNING', 2],
    ['IDLE', 3],
];
我想从第二个数组更新第一个数组的值,结果是:

  finalData= [
        ['APP_NOT_RUNNING', 2],
        ['FALLBACK', 0],
        ['IDLE', 3],
        ['OUTOFSERVICE', 0]
    ];

如果您能帮助我将索引“0”的第二个数组
实际数据
内容与原始数组
预数据
索引“0”匹配,我将不胜感激。如果匹配,请将
actualData
的索引“1”(值)中的内容复制到原始数组中

var preData=[
[“应用程序未运行”,0],
['FALLBACK',0],
['IDLE',0],
['OUTOFSERVICE',0]
];
变量实际数据=[
[“应用程序未运行”,2],
['IDLE',3],
];
preData.forEach((ele、idx、arr)=>{
actualData.forEach(项目=>{
如果(项目[0]==ele[0]){
ele[1]=项目[1];
arr[idx]=ele;
}
});
});

console.log(preData)可能的解决方案之一是将初始数组转换为
Map
,更新它并将其转换回数组:

const preData=[
[“应用程序未运行”,0],
['FALLBACK',0],
['IDLE',0],
['OUTOFSERVICE',0]
];
常量值数据=[
[“应用程序未运行”,2],
['IDLE',3],
];
常量映射=新映射(前数据);
for(valueData的常量[键,值]){
map.set(键、值);
}
const result=Array.from(map);
控制台日志(结果)
您可以使用
Map()
.forEach()
数组方法:

让arr1=[
[“应用程序未运行”,0],
['FALLBACK',0],
['IDLE',0],
['OUTOFSERVICE',0]
];
设arr2=[
[“应用程序未运行”,2],
['IDLE',3],
];
让updateArray=(a1,a2,map=newmap())=>{
a1.forEach(arr=>map.set(arr[0],arr));
a2.forEach(arr=>map.set(arr[0],arr));
返回[…map.values()];
};
log(updateArray(arr1,arr2))

.as console wrapper{max height:100%!important;top:0;}
您需要迭代preData数组,并检查实际数据数组中的每个值是否存在一个值。如果没有,只需将默认值推送到finalData数组,如果有,则添加该值,然后推送它

使用forEach迭代preData数组,并使用filter检查preData中每个值是否存在数据

const preData=[
[“应用程序未运行”,0],
['FALLBACK',0],
['IDLE',0],
['OUTOFSERVICE',0]
];
常量实际数据=[
[“应用程序未运行”,2],
['IDLE',3],
];
常数finalData=[];
preData.forEach(preDataValue=>{
常量索引=finalData.push(preDataValue);
const data=actualData.filter(d=>d[0]==preDataValue[0]);
if(数据长度){
最终数据[index-1][1]+=数据[0][1];
}
});

console.log(finalData)我们可以使用
.map
&
.find

preData=[
[“应用程序未运行”,0],
['FALLBACK',0],
['IDLE',0],
['OUTOFSERVICE',0]
];
前数据2=[
[“应用程序未运行”,2],
['IDLE',3],
];
const finalData=preData.map(x=>{
const found=preData2.find(y=>y[0]==x[0])
如果(找到)
x[1]=找到[1]
返回x;
})

console.log(finalData)感谢您的回复,但我如何修复错误:在构建版本时,类型为“(string | number)[[]”的参数不能分配给类型为“ReadonlyArray”的参数?