簡體   English   中英

使用數組索引搜索字符串字母

[英]Search string letters with array index

我今天有一個小難題可以解決:

var str = "hzuelgdlbo";
var arr = [0, 3, 4, 7, 9];
console.log(res); => "hello"

我用一個簡單的forEach解決了這個問題,現在我問我是否有一個更簡單的解決方案(自定義排序)。

forEach:
idz.forEach(function(idx){    
    var res = [];
    res.push(str[idx]);   
    console.log(res.join(''));
});

一種解決方案可能是遍歷數組並在字符串上執行substr。

干杯

如何使用reduce

[0, 3, 4, 7, 9].reduce(function(p, c) { return p + "hzuelgdlbo"[c] }, '')

或類似的使用地圖

[0, 3, 4, 7, 9].map(function(i) { return "hzuelgdlbo"[i] }).join('');

您可以將兩者都包裝在console.log / alert中以輸出值。

此解決方案創建字母數組,並將其僅在最后轉換為字符串。 它也可以不使用外部變量而返回結果:

arr.reduce(function (word, letterIndex) {
    word.push(str[letterIndex]);
    return word;
}, []).join('');

您可以從字符串(首先轉換為數組)中filter元素:

var str = "hzuelgdlbo".split('').filter(function(el, i, a) {
    if (arr.indexOf(i) > -1) return el;
}).join('');

使用地圖http://jsfiddle.net/mig1098/zx1w9hdw/

var str     = "hzuelgdlbo";
var numbers = [0, 3, 4, 7, 9];

mapp = function(_array,_str){
    return (_array.map(function(n){ return _str[n]; })).join('');
};

console.log(mapp(numbers,str));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM