js求一个循环算法?

我想实现一个小导航功能,有个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.4k
4 个回答
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);

不需要什么算法

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] ));
var arr = ['1001|电脑','1002|个人电脑','99|华硕电脑','100|华硕笔记本'];
var target = "99"
var result = [];
for(var i = 0; i<arr.length; i++) {
    if(arr[i].indexOf(target) > -1) {
        result.push(arr[i].match(/(\d+)\|/)[1]);
        break;
    }
    result.push(arr[i].match(/(\d+)\|/)[1]);
}
alert(result);

这样改了一下,感觉改的有点渣。

function findArr(target,myArray){
  let index = myArray.findIndex(item=>parseInt(item) == target);
  return index > -1 ? myArray.slice(0,index+1) : [];
}; 
let targetArr = findArr(99, ['1001|电脑','1002|个人电脑','99|华硕电脑','100|华硕笔记本']);
targetArr.forEach(item => console.log(parseInt(item)));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题