【问题标题】:Integrate JavaScript for-loop into custom function将 JavaScript for 循环集成到自定义函数中
【发布时间】:2019-04-04 10:09:42
【问题描述】:

我有一个有效的 EcmaScript-3 函数,可以将数组转换为特定的字符串格式。

数组:

ft: [
    1: {name: "gender", value: "F", focus: 0, type: "radio"}
    2: {name: "firstname", value: "empty", focus: 0, type: "text"}
    3: {name: "lastname", value: "empty", focus: 0, type: "text"}
    4: {name: "birthday", value: "empty", focus: 0, type: "text"}
    5: {name: "street", value: "empty", focus: 0, type: "text"}
    6: {name: "streetNo", value: "empty", focus: 0, type: "text"}
]

具体的字符串格式:

ft=gender.radio|F|0;firstName.text|empty|1;lastName.text|empty|0;street.text|empty|0;houseNumber.text|empty|0;zip.text|empty|0;city.text|empty|0;country.select-one|de|0;birthdate-day.text|empty|0;birthdate-month.text|empty|0;birthdate-year.text|empty|0;email.email|empty|0;code.text|filled_out|0

我将数组转换为特定字符串格式的工作函数:

var arr = [];
for (var i = 0; i < ft.length; i++) {
    var elem = ft[i];
    arr.push(elem.name + "." + elem.type + "|" + elem.value + "|" + elem.focus);
}
var str = arr.join(";");

console.log(str);

问题:

我需要一个可以这样调用的函数(EcmaScript-3 格式):

var a = tracking()(ft, false);
console.log(a); 

// the console.log(a) should provide as a result: ft=gender.radio|F|0;firstName.text|...; false;

我的解决方案(不起作用)

function tracking() {
  return function (ft, submitted) {
     var arr = [];
     for (var i = 0; i < ft.length; i++) {
       var elem = ft[i];
       arr.push(elem.name + "." + elem.type + "|" + elem.value + "|" + 
       elem.focus + "submitted");
     }
     var str = arr.join(";");
  }
}

谢谢!

【问题讨论】:

  • 您的解决方案的内部功能没有返回任何内容。只需返回 str 即可。 jsfiddle.net/goa2z159 也许您需要处理最终格式,因为它不同,但无论如何,首先要返回一些东西。
  • return str 你就完成了
  • @JonasWilms 输出不同,因为他在推送中添加了“elem.focus + 提交”。不知道为什么,但仍然........
  • 对了,应该是+ "|" + submitted
  • euuuuuh 根据他提供的结果,不清楚firstName.text|empty|1; 是如何产生的,因为焦点始终为0。此外,不清楚应该如何定位“提交”,因为它在原始文件中丢失了结果。

标签: javascript arrays string function ecmascript-6


【解决方案1】:

看来你把这件事弄得太复杂了。可以这么简单

function tracking (ft, submitted) {
  var arr = [];
  for (var i = 0; i < ft.length; i++) {
    var elem = ft[i];
    arr.push(elem.name + "." + elem.type + "|" + elem.value + "|" + 
    elem.focus + "submitted");
  }
  return arr.join(";");
}

我怀疑你为什么得到那个提交的参数。如果您希望它用作变量,只需在将其推送到数组时删除引号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 2015-09-04
    • 2022-06-15
    • 1970-01-01
    • 2012-08-12
    • 2020-03-14
    • 2011-09-28
    相关资源
    最近更新 更多