【发布时间】: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