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_Reactjs_Algorithm - Fatal编程技术网

Javascript数组相等控件和更改值

Javascript数组相等控件和更改值,javascript,arrays,reactjs,algorithm,Javascript,Arrays,Reactjs,Algorithm,嗨,我有两个可变长度数组,我尝试过如果没有我想要的值,从该数组中删除它,如果它更改了数组2相同的序列代码,则更改总和值 array1 = [ { "serial": "3", "sum": "1" }, { "serial": "700", "sum": "2" }, { "serial": "300", "sum": "1" }, ] array2 = [{ "

嗨,我有两个可变长度数组,我尝试过如果没有我想要的值,从该数组中删除它,如果它更改了数组2相同的序列代码,则更改总和值

array1 = [
    {
      "serial": "3",
      "sum": "1"
    },
    {
      "serial": "700",
      "sum": "2"
    },
    {
      "serial": "300",
      "sum": "1"
    },
]

array2 = [{
      "someting": 10,
      "sum": "3",
      "serialList": ["700","711"],
    },

   {
      "someting": 10,
      "sum": "1",
      "serialList": ["300"],
    },
    {
      "someting": 10,
      "sum": "2",
      "serialList": [],
    }
]  
他说我的两个数组正如我说的数组长度是可变的有时数组1的长度大,有时数组2和我想如果数组1中的序列号不存在,从数组2中删除元素,如果它改变了数组2相同的序列码,则更改和值,根据上面的数组1[0]序列码不存在和数组1[1]和数值不同的数组2[0]和数值更改为和数值数组1[1]到数组2[0],序列号300到相同的和数值到数组不做任何事情我想输出数组1是:

array1 = [
    {
      "serial": "700",
      "sum": "3"
    },
    {
      "serial": "300",
      "sum": "1"
    },
]
使用

常量数组1=[
{
连载:“3”,
总数:“1”
},
{
连载:"700",,
总数:“2”
},
{
连载:"300",,
总数:“1”
}
];
常数数组2=[
{
某物:10,
总数:“3”,
序列列表:[“700”,“711”]
},
{
某物:10,
总数:“1”,
序列列表:[“300”]
},
{
某物:10,
总数:“2”,
序列列表:[]
}
];
const processedArray1=array1.flatMap(el=>{
常量array2el=array2.find({serialList})=>
serialList.includes(el.serial)
);
if(array2el){
if(array2el.sum!==el.sum){
el.sum=阵列2EL.sum;
}
}否则{
返回[];//删除
}
return[el];//return el
});

console.log(processedArray1)这是工作谢谢,那么如何与reduce和flatMap性能有所不同呢?@Alisan26不,不是真的,我只是先想到了
flatMap
解决方案,然后在发布后意识到它可以简化一点。
reduce
的性能可能会稍高一些,因为它在单道中求解,而不是在
flatMap
的两道中求解,这与
map
后接
flat
的深度为1相同
flatMap
reduce
具有相同的大O复杂性,但O(n),因此在计算方面它们是相同的。
array1.flatMap(el => {
  // find array2 element with array1 element's serial
  const array2el = array2.find(({ serialList }) =>
    serialList.includes(el.serial)
  );
  if (array2el) {
    if (array2el.sum !== el.sum) {
      el.sum = array2el.sum; // sum different, update
    }
  } else {
    return []; // return [] to delete
  }
  return [el]; // return [el] to keep
});