我如何比较两个不带';在javascript中没有相同的长度?
我有两个数组Array1和Array2,我想比较它们,就像它们遵循以下三条规则一样 第一件事:我如何比较两个不带';在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=[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中的注释。