为了账号安全,请及时绑定邮箱和手机立即绑定

获取数组对象中的连续元素

获取数组对象中的连续元素

白衣染霜花 2023-09-28 16:02:14
示例:我有一个对象数组:a= [{description: 'H', order: 1},{description: 'K', order: 2},{description: 'K', order: 3},{description: 'H', order: 4}, //I want choose this{description: 'e', order: 5}, //I want choose this{description: 'l', order: 6}, //I want choose this{description: 'l', order: 7}, //I want choose this{description: 'o', order: 8}, //I want choose this{description: 'e', order: 9},{description: 'l', order: 10}]我想依次过滤并找到 5 个对象元素(它们按给定数组中的顺序/顺序出现),我的期望是:b = [{description: 'H', order: 4},{description: 'e', order: 5}, {description: 'l', order: 6},{description: 'l', order: 7},{description: 'o', order: 8}]谢谢大家
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

这是一个时间复杂度为O(n)


const arr = [

    { description: 'H', order: 1 },

    { description: 'K', order: 2 },

    { description: 'K', order: 3 },

    { description: 'H', order: 4 },

    { description: 'e', order: 5 },

    { description: 'l', order: 6 },

    { description: 'l', order: 7 },

    { description: 'o', order: 8 },

    { description: 'e', order: 9 },

    { description: 'l', order: 10 }

];


const key = 'Hello';


// result array

const result = [];


// current index of the test

let index = 0;


for (let e of arr) {

    // if matches the test, add the element to the result array and increse the index

    if (e.description === key[index]) {

        result.push(e);

        index++;

        

        // if already found the result, stop the iteration

        if (index >= key.length) break;

    } else {  // if failed the test, clear the index and the result

        index = 0;

        result.length = 0;

    }

}


console.log(result);


查看完整回答
反对 回复 2023-09-28
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信