重构Javascript ES6
我需要代码块下面的重构帮助。我被要求避免使用let和const,在这里如何使用常量,因为我需要返回所有可能具有匹配id的选项重构Javascript ES6,javascript,ecmascript-6,Javascript,Ecmascript 6,我需要代码块下面的重构帮助。我被要求避免使用let和const,在这里如何使用常量,因为我需要返回所有可能具有匹配id的选项 const findRecordExists = (options, possibleMatchId) => { let item; options.forEach(option => { option.waivers.forEach(waiver => { if (waiver.waiverNameId === po
const findRecordExists = (options, possibleMatchId) => {
let item;
options.forEach(option => {
option.waivers.forEach(waiver => {
if (waiver.waiverNameId === possibleMatchId) {
item = option;
}
});
});
return item;
};
选择的例子是:
options: [{
name:Abc
waivers: [ {waiverNameId :1}, {waiverNameId:2} ]
}]
使用
过滤器
在选项
数组上迭代,返回是否。放弃的部分
匹配:
const findRecordExists = (options, possibleMatchId) => {
return options.filter(
({ waivers }) => waivers.some(
({ waiverNameId }) => waiverNameId === possibleMatchId
)
);
};
或者,如果您不喜欢分解结构:
const findRecordExists = (options, possibleMatchId) => {
return options.filter(
option => option.waivers.some(
wavier => wavier.waiverNameId => waiverNameId === possibleMatchId
)
);
};
由于结果是从findRecordExists
函数立即返回的,因此甚至不需要中间项(或项)变量。使用过滤器
迭代选项
数组,返回放弃RNAMEID的部分是否匹配:
const findRecordExists = (options, possibleMatchId) => {
return options.filter(
({ waivers }) => waivers.some(
({ waiverNameId }) => waiverNameId === possibleMatchId
)
);
};
或者,如果您不喜欢分解结构:
const findRecordExists = (options, possibleMatchId) => {
return options.filter(
option => option.waivers.some(
wavier => wavier.waiverNameId => waiverNameId === possibleMatchId
)
);
};
由于结果是从findRecordExists
函数立即返回的,因此甚至不需要中间的item
(或items
)变量。没关系
使用const
声明标识符时,仅当标识符的值是JavaScript原语(例如数字或布尔值)时,标识符的值才不可更改
如果标识符的值是对象或数组(数组是JavaScript中的对象类型),使用const
声明它并不意味着不能更改该对象标识符的值。这只意味着无法重新分配标识符
要使用const重构代码,请使用下面的代码清单
const findRecordExists=(选项,可能为machid)=>{
可能匹配的常量选项=[];
options.forEach(option=>{
选项。弃权。forEach(弃权=>{
如果(弃权.弃权声明===可能的弃权声明){
具有可能匹配的选项。推送(选项);
}
});
});
返回可能匹配的选项;
};
如果您想跳过创建变量以存储与您的条件匹配的每个选项的中间步骤,您可以使用@CertainPerformance规定的筛选方法
使用const
声明标识符时,仅当标识符的值是JavaScript原语(例如数字或布尔值)时,标识符的值才不可更改
如果标识符的值是对象或数组(数组是JavaScript中的对象类型),使用const
声明它并不意味着不能更改该对象标识符的值。这只意味着无法重新分配标识符
要使用const重构代码,请使用下面的代码清单
const findRecordExists=(选项,可能为machid)=>{
可能匹配的常量选项=[];
options.forEach(option=>{
选项。弃权。forEach(弃权=>{
如果(弃权.弃权声明===可能的弃权声明){
具有可能匹配的选项。推送(选项);
}
});
});
返回可能匹配的选项;
};
如果您想跳过创建变量以存储与您的条件相匹配的每个选项的中间步骤,您可以使用@CertainPerformance规定的筛选方法。您可以使用查找
方法重新考虑。这将简化并避免项
变量
const选项=[
{
名称:“Abc”,
弃权:[{弃权声明:1},{弃权声明:2}]
}
];
const findRecordExists=(选项,可能的标记)=>
选项。查找(选项=>
option.弃权声明.find(弃权声明=>弃权声明.弃权声明===possibleMatchId)
);
log(findRecordExists(选项2));
log(findRecordExists(选项3))代码>您可以使用find
方法重新计算系数。这将简化并避免项
变量
const选项=[
{
名称:“Abc”,
弃权:[{弃权声明:1},{弃权声明:2}]
}
];
const findRecordExists=(选项,可能的标记)=>
选项。查找(选项=>
option.弃权声明.find(弃权声明=>弃权声明.弃权声明===possibleMatchId)
);
log(findRecordExists(选项2));
log(findRecordExists(选项3))代码>您希望得到什么结果?一个包含所有对象的数组,这些对象具有一个豁免
,并且输入了可能的MATCHID
?您希望得到什么结果?所有对象的数组,这些对象具有一个豁免
,并且输入了可能的MATCHID
?