如何在一个满是字符串的数组中查询 某一个数组项是否包含 一个字符串?

你只是看起来很努力 2017-03-22 04:19:34
比如 我有一个 数组 arr 里面有2K个 人的姓名。
var arr=['王大锤','王大人','李大锤'];
我想 查询出来 里面 叫 王大 开头的人的名字 咋么搞?



...全文
244 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 8 楼 LinBilin_ 的回复:
[quote=引用 4 楼 showbo 的回复:]

    var kw='王大'
    var arr=['王大锤','王大人','李大锤'];
    for (var i = 0, j = arr.length; i < j;i++)if(arr[i].indexOf(kw)==0){alert(arr[i]+'\n'+i);break;}
这样写是有问题的,楼主要的应该是所有以“王大”开头的,你这边只是一个
引用 6 楼 m0_38019068 的回复:
我写的代码是这样的: var newArr=arr.filter(function(str){ return str.indexOf(/秀夫/); }); alert(newArr); 但是返回来的信息是全部的数组内的文本。。。

var arr = ['王大锤', '王大人', '李大锤','李王大'];
	var newArr=arr.filter(function(str){
		return str.indexOf('王大')>=0;
	});
[/quote] 重新看代码,修改过了,startsWith ie不支持。。
   var kw = '王大'
    var arr = ['王大锤', '王大人', '李大锤'];
    var rst = [];
    for (var i = 0, j = arr.length; i < j; i++) if (arr[i].indexOf(kw) == 0) { rst.push(arr[i]) }
    alert(rst.join('\n'))
天际的海浪 2017-03-22
  • 打赏
  • 举报
回复
引用 9 楼 m0_38019068 的回复:
为什么JS的中文帮助手册.CHM里面没有 filter的说明啊。
你的is手册应该是ie5.5时候出的。比较老了。而 filter方法ie9才支持。手册中当然没有、 要看最新的js方法: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
  • 打赏
  • 举报
回复
为什么JS的中文帮助手册.CHM里面没有 filter的说明啊。
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:

    var kw='王大'
    var arr=['王大锤','王大人','李大锤'];
    for (var i = 0, j = arr.length; i < j;i++)if(arr[i].indexOf(kw)==0){alert(arr[i]+'\n'+i);break;}
这样写是有问题的,楼主要的应该是所有以“王大”开头的,你这边只是一个
引用 6 楼 m0_38019068 的回复:
我写的代码是这样的: var newArr=arr.filter(function(str){ return str.indexOf(/秀夫/); }); alert(newArr); 但是返回来的信息是全部的数组内的文本。。。

var arr = ['王大锤', '王大人', '李大锤','李王大'];
	var newArr=arr.filter(function(str){
		return str.indexOf('王大')>=0;
	});
天际的海浪 2017-03-22
  • 打赏
  • 举报
回复
引用 6 楼 m0_38019068 的回复:
我写的代码是这样的: var newArr=arr.filter(function(str){ return str.indexOf(/秀夫/); }); alert(newArr); 但是返回来的信息是全部的数组内的文本。。。
var newArr=arr.filter(function(str){ return str.indexOf("秀夫")!=-1; }); alert(newArr);
  • 打赏
  • 举报
回复
我写的代码是这样的: var newArr=arr.filter(function(str){ return str.indexOf(/秀夫/); }); alert(newArr); 但是返回来的信息是全部的数组内的文本。。。
  • 打赏
  • 举报
回复
引用 3 楼 LinBilin_ 的回复:

var arr = ['王大锤', '王大人', '李大锤'];
var newArr=arr.filter(function(str){
return str.startsWith('王大');
});

这样更简单


不是用 王大 开始的 而是 包含用啥方法?
  • 打赏
  • 举报
回复

var kw = '王大'
var arr = ['王大锤', '王大人', '李大锤'];
var rst = [];
for (var i = 0, j = arr.length; i < j; i++) if (arr[i].indexOf(kw) == 0) { rst.push(arr[i]) }
alert(rst.join('\n'))
  • 打赏
  • 举报
回复

var arr = ['王大锤', '王大人', '李大锤'];
	var newArr=arr.filter(function(str){
		return str.startsWith('王大');
	});
这样更简单
  • 打赏
  • 举报
回复
遍历不就行了
当作看不见 2017-03-22
  • 打赏
  • 举报
回复
startsWith() 这个是字符串方法;

var newArr =arr.map(function(v){
return v.startsWith("王大");
})

console,log(newArr);
就三行;

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧