格式化Javascript数据数组
Formatting an array of Javascript data
这是一个web聊天的代码。我希望有这个代码检查每个单词,然后格式只有twitter @joeblow用户名作为twitter配置文件链接。
简单地说,我正在解析聊天数据,以将文本转换为twitter链接、标签、/命令,或者如果不是这三者中的任何一种,则将其保留为文本。下面是我的调试代码。
我正在学习如何使用apply或call,但不完全理解它们。就代码而言,它应该接受上下文数组,并对数组中的每个项应用format函数。
请注意,这是我第一次尝试使用apply(),我不确定我做错了什么。
当我运行format.apply(undefined,context('@joeblow is my username'));
时,它只返回[twitter]@joeblow
。它应该打印类似[twitter]@joeblow [default]is [default]my [default]username
的东西。在真实的场景中,@joeblow将是链接到@joeblow配置文件的HTML(下面的伪代码只是为了简洁)。
我希望format()函数应用于传递的每个单词。context()函数只是接受传入的数据并将其转换成一个数组。我知道我可以写一个for循环,但我正在努力学习如何使用apply()/call()。
function preformat(message) {
format_message = {
'#': 'hashtag',
'/': 'command',
'@': 'twitter'
}
var char = message.charAt(0);
var type = format_message[char];
if (type) {
return type;
} else {
return 'default';
}
}
function context(input) {
var message = [];
var words = input.split(' ');
for (var i=0;i<words.length;i++) {
message[i] = words[i];
}
return message;
}
function format(message) {
var type = preformat(message);
format.types = {
'command': function(type, message) { return '[command]' + message; },
'hashtag': function(type, message) { return '[hashtag]' + message; },
'twitter': function(type, message) { return '[twitter]' + message; },
'default': function(type, message) { return '[default]' + message; }
}
var parse = format.types[type];
return parse(type,message);
}
我使用:
format.apply(undefined,context('@joeblow is my username'));
您遇到的问题是,当您使用apply
将分割字符串传递给format
作为单独的参数时,在该函数中您实际上迭代这些参数。
.apply
不会自动为你做这些——你必须要么使用显式循环,要么使用像.map
这样隐式循环数组的函数。
.apply
的主要用途是当你事先不知道你要传递多少个参数给一个需要单独参数而不是数组的函数时调用函数。
由于您的format
函数实际上只接受一个参数并返回该参数的格式化版本,因此请尝试以下操作:
context("@joeblow is my username").map(format).join(' ');
- JSON数组数据返回Undefined
- 具有关联数组数据集的D3.js表
- TinyMCE获取数组数据
- Emberjs#每个循环不处理数组数据
- 使用Angular.js访问php数组数据
- 数组数据排序类似mysql查询
- 在Redux中映射对象数组数据
- jqGrid - 搜索本地数组数据
- 如何在不赋值数组变量的情况下读取数组数据
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 如何在 AngularJS 中从 API 访问数组数据
- JQuery - 根据数组数据将 html 表列添加到表的末尾
- 如何将json格式的数组数据从jquery返回到html
- 异步循环使用递归:如何访问推送数组数据
- Node.js对象数组数据联接
- 序列promise链与数组数据,如何解析promise链
- 如何加速getJSON数组数据
- PHP同时循环数组数据显示到javascript中
- 流星:显示数组数据,因为表在添加新列时给出了重复值
- 数组数据不会显示在表中