我想实现一个小导航功能,有个js数组。我给他变成了这样的了。$arr = ['1001|电脑','1002|个人电脑','99'|华硕电脑,'100'|华硕笔记本];现在要实现这样的,就是我输入。例如:99,就开始找这个数组,输出 1001,1002,99。99后面的都截断。输入 1002,打印出 1001,1002.怎么弄呢?var length = myArray.length;for (var i = 0; i < length; i++) { if(myArray[i].indexOf(id) == -1){
} //我写的部分代码,比较失败,里面的太乱了,不敢贴出来,吓人。谁指点我一下嘛!
2 回答
![?](http://img1.sycdn.imooc.com/5859e2d50001f6bb01000100-100-100.jpg)
qq_笑_17
TA贡献1818条经验 获得超7个赞
var arr = ['1001|电脑','1002|个人电脑','99|华硕电脑','100|华硕笔记本'];var target = "99"var result = [];for(var i = 0; i<arr.length; i++) { result.push(arr[i].match(/(\d+)\|/)[1]); if(arr[i].indexOf(target) > -1) { break; } }console.log(result);
![?](http://img1.sycdn.imooc.com/5458453d0001cd0102200220-100-100.jpg)
德玛西亚99
TA贡献1770条经验 获得超3个赞
不需要什么算法
var myArray = ['1001|电脑','1002|个人电脑','99|华硕电脑','100|华硕笔记本'];var id = 100;var result = [];for (var i = 0; i < myArray.length; i++) { var sec = myArray[i].split('|', 2); var theid = parseInt(sec[0]); var thename = sec[1]; result.push(thename); if (theid == id) { break; } }console.log(result);
ES6:
let myArray = ['1001|电脑','1002|个人电脑','99|华硕电脑','100|华硕笔记本'];let id = 99;let last = myArray.findIndex(v=> parseInt( v.split('|', 2)[0] ) ===id ) myArray.slice(0, last+1).forEach(v=> alert( v.split('|', 2)[0] ));
添加回答
举报
0/150
提交
取消