如果使用打字稿映射不起作用,查找并替换数组中存在的值

问题描述

我有一个数组,其中包含一组没有空格的值,因此我想找到该值并将其替换为空格 例如:

dateOfJoining --> 加入日期

就业状况 --> 就业状况

<?PHP
    require("../database_android.PHP");

    if(isset($_POST["package_name"]) &&  $_POST["package_name"] != "") {
        $package_name = MysqL_real_escape_string($_POST["package_name"]);
    } else {
        echo "package_name missing";
        return;
    }

    if(isset($_POST["app_name"]) &&  $_POST["app_name"] != "") {
        $app_name = MysqL_real_escape_string($_POST["app_name"]);
    } else {
        echo "app_name missing";
        return;
    }

    if(isset($_POST["activity"]) &&  $_POST["activity"] != "") {
        $activity = MysqL_real_escape_string($_POST["activity"]);
    } else {
        echo "activity missing";
        return;
    }

    if(isset($_POST["activity_name"]) &&  $_POST["activity_name"] != "") {
        $activity_name = MysqL_real_escape_string($_POST["activity_name"]);
    } else {
        echo "activity_name missing";
        return;
    }

    if(isset($_POST["component_info"]) &&  $_POST["component_info"] != "") {
        $component_info = MysqL_real_escape_string($_POST["component_info"]);
    } else {
        echo "component_info missing";
        return;
    }



    $application_id = already_exists_application($package_name);
    if($application_id < 0) {
        MysqL_query("INSERT INTO androidactivities_application (package_name,app_name) VALUES ('". $package_name ."','". $app_name ."')");
        $application_id = already_exists_application($package_name);
    }

    $componentinfo_id = already_exists_componentinfo($application_id,$component_info);
    if($componentinfo_id < 0 && $application_id > 0) {
        MysqL_query("INSERT INTO androidactivities_componentinfo (application_id,activity,activity_name,component_info) VALUES ('". $application_id ."','". $activity ."','". $activity_name ."','". $component_info ."')");

        echo "successful";
    } else {
        echo "exists";
    }
?>

<?PHP
    function already_exists_application($package_name) {
        $result = MysqL_query("SELECT * from androidactivities_application WHERE package_name = '".$package_name."'");

        if($row = MysqL_fetch_object($result)) {
                return $row -> application_id;
        }
        else {
            return -1;
        }
    }

    function already_exists_componentinfo($application_id,$component_info) {
        $result = MysqL_query("SELECT * from androidactivities_componentinfo WHERE application_id = '".$application_id."' AND component_info = '".$component_info."'");

        if($row = MysqL_fetch_object($result)) {
                return $row -> componeninfo_id;
        }
        else {
            return -1;
        }
    }
?>

它总是返回 let attributes =["dateOfJoining","employmentStatus"] let filtered = attributes.filter((item) => { if (item === 'dateOfJoining') { item = 'Date Of Joining'; } if (item === 'employmentStatus') { item = 'Employment Status'; } return item; }); 但它需要像 filtered =["dateOfJoining","employmentStatus"] 一样返回。

我尝试过上述方法,但没有按预期返回值。 他们无论如何要解决这个问题吗?

解决方法

对于此用例,您可以更好地使用 forEach 方法。
请参见下面的示例:

let attributes =["dateOfJoining","employmentStatus"]

 attributes.forEach((item,index) => {
  if (item === 'dateOfJoining') {
    attributes[index] = 'Date Of Joining';
  }

  if (item === 'employmentStatus') {
    attributes[index] = 'Employment Status';
  }
  console.log('-*-*',item);
});

而且甚至更好不使用任何 if else 和无限数量的句子:

let attributes =["dateOfJoining","employmentStatus","someOtherText","andAnotherText"]

attributes.forEach((item,index) => {
  var result = item.replace( /([A-Z])/g," $1" );
    attributes[index] = result.charAt(0).toUpperCase() + result.slice(1);
});

console.log(attributes);   
// ["Date Of Joining","Employment Status","Some Other Text","And Another Text"]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...