字符串中每个双字或三字的 Javascript 函数
Javascript function for each double or triple words in string
在这里,我有一些javascript可以为字符串中的每个单独单词运行一个函数:
var input = 'this is some text';
var words = input.split(' ');
$.each(words,function(i){
//Do something
});
但是我将如何做类似的事情来为字符串中的每对单词运行函数呢?喜欢这个:
- 这是
- 是一些
- 一些文字
甚至三个字:
- 这是一些
- 是一些文本
使用公共for
循环而不是使用 foreach
循环
var words = "this is some text".split(' ');
// take the words 2 by 2
for (var i = 0; i < words.length - 1; ++i) {
var currentWord = words[i],
nextWord = words[i + 1];
// do something
}
// take the words 3 by 3
for (var i = 1; i < words.length - 1; ++i) {
var previousWord = words[i - 1],
currentWord = words[i],
nextWord = words[i + 1];
// do something
}
您也可以处理一般情况。
var PACKET_SIZE = 2;
var words = "this is some text".split(' ');
for (var i = 0; i <= words.length - PACKET_SIZE; ++i) {
var packet = words.slice(i, i + PACKET_SIZE);
// do something
}
编辑:添加大于或等于,以便还包括最后一组单词。
只是一个循环的提案。
function getN(array, n) {
var result = [];
array.forEach(function (a, i, aa) {
i + n <= aa.length && result.push(aa.slice(i, i + n).join(' '));
});
return result;
}
var input = 'this is some text',
array = input.split(' ');
document.write('<pre>' + JSON.stringify(getN(array, 2), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(getN(array, 3), 0, 4) + '</pre>');
或者使用回调来减少
function getN(n) {
return function (r, a, i, aa) {
i + n <= aa.length && r.push(aa.slice(i, i + n).join(' '));
return r;
};
}
var input = 'this is some text',
array = input.split(' ');
document.write('<pre>' + JSON.stringify(array.reduce(getN(1), []), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(array.reduce(getN(2), []), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(array.reduce(getN(3), []), 0, 4) + '</pre>');
只需使用增量为 2 或 3 的 for 循环:
for( var i = 0; i < words.length; i += 2 ) {
//Do something with words[i]
}
你可以做到,
var input = 'this is some text';
var words = input.split(' ');
var length = 2;
var str;
$.each(words, function(j) {
str = "";
for (i = 0; i < length && (j + i) < words.length; i++) {
str += " " + words[j + i];
}
$("#container").append("<div>" + str + "</div>");
});
您可以通过更改length
参数的值来更改图案长度。
小提琴
下面的代码使用 split
函数为您提供一个单词数组,然后应用 map
将其转换为数组数组,每个数组的大小为 n。join
函数用于将这些数组再次转换为空格分隔的字符串。
var s="this is some text made of several words";
var n=2;
var result = s.split(' ').map(function(val,index,arr) {
return arr.slice(index,index+n).join(' ');
});
alert(result);
如果你不希望单词组小于n,即单词末尾的单词组,则需要更多代码:
var s = "this is some text made of several words";
var n = 3;
var arr = s.split(' ');
var result = arr.slice(0, arr.length - n + 1)
.map(function(val, index) {
return arr.slice(index, index + n).join(' ');
});
alert(result);
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- Node.js v6.2.0类扩展不是函数错误
- 比较从函数和生成的日期对象
- jQuery中是否内置了任何字符串格式化函数
- 字符串中每个双字或三字的 Javascript 函数