如何计算js中数组每个元素的字符数?

时间:2018-10-14 12:02:57

标签: javascript arrays

如何计算数组中每个元素的字母“ a”数量?

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];

我尝试使用split()方法,但是无法完成...。

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];
let newA = a.toString();

for(i = 0; i < a.length; i++) {
  let newAr = a[i].split(',');

  for(j = 0; j < newAr.length; j++) {
    console.log(newAr[j].split(','));
  }
}

谢谢!

3 个答案:

答案 0 :(得分:2)

Array.prototype.map()

  

map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

String.prototype.match()

  

在将字符串与正则表达式匹配时,match()方法将检索匹配项。

您可以使用map()match()来获取每个字符串项中的计数数组:

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];

let aCountArr = a.map(i => {
  return i.match(/a/g).length;
});
console.log(aCountArr);

或::您可以使用for...of

  

for ... of语句创建一个循环,循环访问可迭代对象,这些对象包括:内置String,Array,类似Array的对象(例如,参数或NodeList),TypedArray,Map,Set和用户定义的可迭代对象。它使用对象的每个不同属性的值调用要执行的语句的自定义迭代钩子。

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];

let aCountArr = [];
for(let c of a){
  aCountArr.push(c.match(/a/g).length)
}
console.log(aCountArr);

答案 1 :(得分:0)

  

如何计算数组中每个元素的字母“ a”数量?

如果目标是得到一个新数组,该数组包含第一个数组中单词中有多少个a的计数,则mapreduce应该做它:

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];
let result = a.map(entry =>
    Array.from(entry).reduce((counter, ch) =>
        ch === "a" ? counter + 1 : counter,
        0
    )
);
console.log(result);

map遍历原始数组,让我们处理每个条目并为其产生结果。我们将字符串转换为字符数组,然后使用reduce来计算其中有a个字符。

还有大约18种其他方式。 :-)例如,我们可以使用replace删除所有非a的字符并取其长度:

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];
let result = a.map(entry =>
    entry.replace(/[^a]/g, "").length
);
console.log(result);

答案 2 :(得分:0)

获取数组中每个元素的计数:

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];
let count = a.map(el => el.match(/a/g).length);
console.log(count);

获取整个数组的计数:

let a = ['Guatemala', 'Canada', 'Costa Rica', 'Anguilla', 'North Korea'];
let count = a.join('').match(/a/g).length;
console.log(count);