Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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

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

我如何比较两个不带';在javascript中没有相同的长度?

我如何比较两个不带';在javascript中没有相同的长度?,javascript,arrays,arraylist,data-structures,Javascript,Arrays,Arraylist,Data Structures,我有两个数组Array1和Array2,我想比较它们,就像它们遵循以下三条规则一样 第一件事: Array1=[en,fr,eg]; Array2=[{lang:en},{lang:eg}] 比较后的结果将是 Result=[{lang:en},{lang:fr,Maybe:i_can_add_other_Attribute},{lang:eg}] 第二件事 如果Array1=[en,fr,eg]和Array2=[{lang:en},{lang:fr}]那么结果应该是result[{lang

我有两个数组Array1和Array2,我想比较它们,就像它们遵循以下三条规则一样

第一件事:

Array1=[en,fr,eg];
Array2=[{lang:en},{lang:eg}]
比较后的结果将是

Result=[{lang:en},{lang:fr,Maybe:i_can_add_other_Attribute},{lang:eg}]
第二件事

如果
Array1=[en,fr,eg]
Array2=[{lang:en},{lang:fr}]
那么结果应该是
result[{lang:en},{lang fr}]

第三件事

而Array2应该按照Array1的顺序排列,这里是一个例子

Array1=[en,fr,eg]
Array2=[{lang:fr},{lang:en},{lang:eg}]
那么它的结果应该是

 Result=[{lang:en},{lang:fr},{lang:eg}]

似乎您并不真正关心
Array2
中最初的内容,只关心
Array
中的内容。您只需直接从
Array1
中的值创建一个新的对象数组,即可轻松使用:

const数组1=['en','fr','eg'];
设Array2=[{lang:'eg'},{lang:'fr'},'土豆泥';
Array2=Array1.map(lang=>({lang}));

控制台日志(Array2)
似乎您并不真正关心
Array2
中的原始内容,只关心
Array
中的内容。您只需直接从
Array1
中的值创建一个新的对象数组,即可轻松使用:

const数组1=['en','fr','eg'];
设Array2=[{lang:'eg'},{lang:'fr'},'土豆泥';
Array2=Array1.map(lang=>({lang}));

控制台日志(Array2)如果希望尽可能使用Array2中的值,可以执行以下操作:

const数组1=['en','fr','eg'];
常量数组2=[{lang:'en'},{lang:'eg'}];
const combined=Array1.map(键=>
Array2.find(obj=>obj.lang==key)|{lang:key}

);如果希望尽可能使用Array2中的值,可以执行以下操作:

const数组1=['en','fr','eg'];
常量数组2=[{lang:'en'},{lang:'eg'}];
const combined=Array1.map(键=>
Array2.find(obj=>obj.lang==key)|{lang:key}

);据我所知,您有一个包含所有可用lang的数组和一个包含更多关于每个lang属性的对象数组,如果我是正确的,我建议您将第二个数组保存为一个对象,以防止每次扫描数组并更好地表示数据:

let langWithProps = {
  en: {},
  fr: {}
  ...
}
然后你可以做:

让langWithProps={
恩:{},
fr:{}
}
常量langs=['en','fr','eg'];
langs.forEach(函数(值){
如果(!langWithProps[值]){
langWithProps[value]={可能:“您可以添加其他属性”};
}
});

控制台日志(langWithProps)据我所知,您有一个包含所有可用lang的数组和一个包含更多关于每个lang属性的对象数组,如果我是正确的,我建议您将第二个数组保存为一个对象,以防止每次扫描数组并更好地表示数据:

let langWithProps = {
  en: {},
  fr: {}
  ...
}
然后你可以做:

让langWithProps={
恩:{},
fr:{}
}
常量langs=['en','fr','eg'];
langs.forEach(函数(值){
如果(!langWithProps[值]){
langWithProps[value]={可能:“您可以添加其他属性”};
}
});


控制台日志(langWithProps)
somevalue
从何而来?@CertainPerformance它将是我可以推的任何对象所以,只需覆盖
Array1=Array2
?(可能有副本)数组有一个特定的顺序?是的,数组1有特定的顺序意味着它将是相同的,但数组2将随着时间而变化,并比较
somevalue
来自何处?@CertainPerformance它将是我可以推送的任何对象所以,只需覆盖
Array1=Array2
?(可能有一份副本)数组有一个特定的顺序?是的,数组1有一个特定的顺序意味着它将是相同的,但数组2会随着时间而变化,并进行比较我认为他希望在数组2中找到的值也会保留…我认为他希望在数组2中找到的值也会保留…我认为他希望在数组2中找到的值只会保留太…@Michael如果我理解正确,那么这应该可以做到,只有在第二个数组中找不到一个对象时,它才会添加一个新对象。基本上把Array2列为“真相之源”。是的,我认为这可能是OP想要的。虽然还不清楚。它还保留了第一个数组的顺序,刚才看到了OP中的注释。我想他希望在array2中找到的值也会保留…@Michael如果我理解正确,那么应该这样做,如果在第二个数组中找不到,它只会添加一个新对象。基本上把Array2列为“真相之源”。是的,我认为这可能是OP想要的。虽然还不太清楚,但它也保留了第一个数组的顺序,刚才看到了OP中的注释。