gpt4 book ai didi

javascript - 重构仅根据条件和返回值进行区分的 JavaScript 函数

转载 作者:行者123 更新时间:2023-12-02 17:14:30 25 4
gpt4 key购买 nike

目前我有 3 个非常相似的功能。它们仅在输入参数名称、条件和返回值方面有所区别。我将重构它们,我想你们可能会告诉我你们认为重构它们的最佳方法是什么。感觉必须有 1 个函数,但具有易于理解的名称,并且条件应该作为参数中的函数或类似的东西传递。

function getFieldName(fieldName) {
var dataSet = getDataSet();

var dataFields = dataSet.DataFields;
for (var i = 0; i < dataFields.length; i++) {
if (dataFields[i].FieldName.toLowerCase() === fieldName.toLowerCase()) {
return dataFields[i].FieldName;
}
}
return null;
};


function getFieldNameByDisplayName(displayName) {
var dataSet = getDataSet();

var dataFields = dataSet.DataFields;
for (var i = 0; i < dataFields.length; i++) {
if (dataFields[i].DisplayName.toLowerCase() === displayName.toLowerCase()) {
return dataFields[i].FieldName;
}
}

return null;
};


function getDisplayNameByFieldName(fieldName) {
var dataSet = getDataSet();

var dataFields = dataSet.DataFields;
for (var i = 0; i < dataFields.length; i++) {
if (dataFields[i].FieldName.toLowerCase() === fieldName.toLowerCase()) {
return dataFields[i].DisplayName;
}
}

return null;
};

你觉得怎么样?谢谢。

======================================

Update: may be something like this:

function getFieldName(fieldName, compareFieldProperty, returnFieldProperty) {
var dataSet = getDataSet();

var dataFields = dataSet.DataFields;
for (var i = 0; i < dataFields.length; i++) {
if (dataFields[i][compareFieldProperty].toLowerCase() === fieldName.toLowerCase()) {
return dataFields[i][returnFieldProperty];
}
}

return null;
};

最佳答案

好吧,你可以使用dynamic property accessor并将属性名称作为参数传递:

function getAbyB(a, b, bvalue) {
var dataFields = getDataSet().DataFields;
for (var i = 0; i < dataFields.length; i++) {
if (dataFields[i][b].toLowerCase() === bvalue.toLowerCase()) {
return dataFields[i][a];
}
}
return null;
};


function getFieldName(fieldName) {
return getAbyB("FieldName", "FieldName", fieldName);
}
function getFieldNameByDisplayName(displayName) {
return getAbyB("FieldName", "DisplayName", displayName);
}
function getDisplayNameByFieldName(fieldName) {
return getAbyB("DisplayName", "FieldName", fieldName);
}

关于javascript - 重构仅根据条件和返回值进行区分的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24552321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com