如何使用javascript添加特定对象?

问题描述 投票:0回答:2

我有一个像这样的数组:

enter image description here

[当我找到'finished'时,我将其拆分,我想为每个带有'Getting'的字符串显示,他的链接带有'HTTP_404']

我的代码是:

 var input = ['urlGettingF', '├─BROKEN─aquaHTTP_404', '├─BROKEN─url1HTTP_404', 'ok', 'urlok', 'Finished',
               'urlGettingF2', '├─BROKEN─url1HTTP_404', '├─BROKEN─url21HTTP_404', 'Finished',
               'urlGettingF3', 'url3ok', 'ok', 'Finished',
               'urlGettingF4', 'url4ok', 'ok', 'Finished'
              ];

  var inputDecouped = [];
  let Test=[];
  let start = '';
  let pageGetting='';
  let liens =[];
  let pages=[];
  let ok= false;
  let reference = {};
  let grouped = {};
  // Fonction pour la découpe du input en plusieurs tableaux selon Finished
  function ArrayToMultipleArrays(array) {
    let result = [[]];
    let index = 0;
    array.forEach((x, i) => {
      //console.log(index, i, x)
      // On va mettre les tableaus selon la valeur de x
      result[index].push(x);
      if ((i + 1) < array.length && x.includes('Finished')) {
        index++;
        result[index] = [];
      }
    });
    return result
  }

  inputDecouped = ArrayToMultipleArrays(input);
  for(let i=0; i<inputDecouped.length; i++){
    for(let k = 0 ; k< inputDecouped[i].length; k++ ){ 
      if(inputDecouped[i][k].indexOf('Getting') > -1 || inputDecouped[i][k].indexOf('HTTP_404') > -1 ){
       if(inputDecouped[i][k].indexOf('Getting') > -1 ){
         start = inputDecouped[i][k];
         pageGetting = start;
         ok= true
         //pages.push(({id:i, page: inputDecouped[i][k]}));
       }
      else if(inputDecouped[i][k].indexOf('HTTP_404') > -1 ){
        if(ok === true){
          liens=[];
          ok = false;
        }
        liens.push(inputDecouped[i][k]);
       }
      } 
   } 

       Test.push(({page:pageGetting, lien: liens}));


  }

  console.log(Test);

当我运行它时,我得到:

enter image description here

但是,我希望结果是:

[[object Object] {
  lien: ["├─BROKEN─aquaHTTP_404", "├─BROKEN─url1HTTP_404"],
  page: "urlGettingF"
}, [object Object] {
  lien: ["├─BROKEN─url1HTTP_404", "├─BROKEN─url21HTTP_404"],
  page: "urlGettingF2"
}]

我的jsbin是:https://jsbin.com/loqagekiji/edit?js,console

我该如何解决?

javascript arrays object indexof arrayobject
2个回答
0
投票

我尝试了您的jsbin,并通过替换获得了所需的结果

Test.push(({page:pageGetting, lien: liens}));

with

if (!ok) {
  Test.push(({page:pageGetting, lien: liens}));
}

0
投票

这可能有帮助。

var input = ['urlGettingF', '├─BROKEN─aquaHTTP_404', '├─BROKEN─url1HTTP_404', 'ok', 'urlok', 'Finished', 'urlGettingF2', '├─BROKEN─url1HTTP_404', '├─BROKEN─url21HTTP_404', 'Finished', 'urlGettingF3', 'url3ok', 'ok', 'Finished', 'urlGettingF4', 'url4ok', 'ok', 'Finished'];

let record = []
const result = input.reduce((p, c) => 
    (((/^Finished$/.test(c) && /HTTP_404/.test(record[1])) 
        ? ((p = [...p, { lien: [record[1], record[2]], page: record[0] }]), (record = []))
        : (record.push(c))), 
     p),[])
console.log(result)
© www.soinside.com 2019 - 2024. All rights reserved.