首页 > 解决方案 > 如何在 JavaScript 中解决这个特定的算法?

问题描述

给定这个数组: arr = [ '00011100', '00000001', '00101101', '11111111' ];

如果元素在数组中的偶数位置,我必须从该元素中删除所有具有偶数索引的字符,反之亦然。例子:

第一个元素在偶数位置: arr[0] = '0 0 0 1 1 1 0 0 '

第二个元素位于奇数位置: arr[1] = ' 0 0 0 0 0 0 0 1';

我必须删除这些字符并将它们作为连接字符串返回。

整个数组的输出 // 0110 0000 0011 1111

请帮我解决这个任务:) 提前谢谢你!

let enigma = "";
for(let i = 0; i < arr.length; i++){ 
    let index = arr[i];
    let evenStr = ""; 
    let oddStr = "";
      if(index % 2 === 0) {
         for(let j = 1; j < index.length; j+=2) {
             evenStr += index[j];
         } enigma += evenStr;      
            } else if(index % 2 !== 0) {
         for(let x = 1; x < index.length; x+=2) {
             oddStr += index[x];
         } enigma += oddStr;
    }
}
console.log(enigma) //0110000100111111;

到目前为止,这是我的代码,但我收到的输出略有不同:/

标签: javascriptarraysstringloopsconcatenation

解决方案


这是您的问题的潜在解决方案。

使用减少()

const removeOddIndex = ( str ) => {
 return str.split("").filter( ( element, index ) => index % 2).join("");
}

const removeEvenIndex = ( str ) => {
 return str.split("").filter( ( element, index ) => !( index % 2 )).join("");
}

const array = [ '00011100', '00000001', '00101101', '11111111' ];

const result = array.reduce( ( acc, cur, index ) => {
  if( index % 2 ) {
    acc[index] = removeEvenIndex( cur );
  } else {
    acc[index] = removeOddIndex( cur );
  }
  return acc;
}, array).join("")

console.log(result)

使用地图()

const removeOddIndex = ( str ) => {
 return str.split("").filter( ( element, index ) => index % 2).join("");
}

const removeEvenIndex = ( str ) => {
 return str.split("").filter( ( element, index ) => !( index % 2 )).join("");
}

const array = [ '00011100', '00000001', '00101101', '11111111' ];

const result = array.map( ( element, index ) => {
  return index % 2 ? removeEvenIndex( element ) : removeOddIndex( element )
} ).join("");

console.log(result)


推荐阅读