获取数组中每个元素的长度 - JavaScript

8
我希望能够获得数组中每个元素的长度。
我的代码如下:
var a = "Hello world" ; 
var chars = a.split(' '); 

所以我将拥有一个数组。
chars = ['Hello' , 'world'] ; 

但我该如何获取每个单词的长度,像这样?
Hello = 5 
world = 5
6个回答

9

您可以使用map数组函数:

var lengths = chars.map(function(word){
 return word.length
}) 

6

现在(2019-10-03),ES6已经广泛应用,所以为了完整性,您可以使用箭头运算符.map()一起使用。

var words = [ "Hello", "World", "I", "am", "here" ];
words.map(w => w.length);
> Array [ 5, 5, 1, 2, 4 ]

或者,非常简洁地说
"Hello World I am here".split(' ').map(w => w.length)
> Array [ 5, 5, 1, 2, 4 ]

2
或者您可以使用数组推导式完成:[for (word of words) word.length] - friedi
@friedi - 很不错!但是MDN警告 "非标准。不要使用!"……这已从ES6草案中删除;它有可能出现在ES7中,而MDN兼容性图表仅显示Firefox目前支持它。还是很酷的。 - Stephen P
我迷失了!好的,所以“words”是一个数组,“words.map”获取每个单词的长度,并将其存储在一个数组中,如“> Array[5,5,1,2,4]”。但是如何访问后面数组的单元格?它的名称是什么? - Cristofayre
@Cristofayre - 在我的答案中,示例来自在浏览器控制台中键入,并且我没有将words.map的结果分配给任何内容。你想做的是类似于 let wordLengths = words.map(w => w.length); 然后你可以像访问其他数组一样访问后一个数组作为wordLengths[i]。在浏览器控制台中,我使用 var ,但在实际的JavaScript代码中,我从不使用它; 我使用 constlet - Stephen P

3
这里的关键是使用字符串的 .length 属性:
   for (var i=0;i<chars.length;i++){
    console.log(chars[i].length);
    }

2
你可以创建一个结果对象(这样你就有键“hello”和长度5):
function getLengthOfWords(str) {
    var results = {}; 
    var chars = str.split(' ');
    chars.forEach(function(item) {
        results[item] = item.length;
    });
    return results;
}

getLengthOfWords("Hello world"); // {'hello': 5, 'world': 5}

2

尝试使用 map() 方法

var words = ['Hello', 'world'];

var lengths = words.map(function(word) {
  return word + ' = ' + word.length;
});

console.log(lengths);


1
您可以使用forEach,如果您想保留单词和长度,可以按照以下方式进行:
var a = "Hello world" ; 
var chars = a.split(' ');

    var words = [];
    chars.forEach(function(str) { 
        words.push([str, str.length]);
    });

你可以访问数组中的大小和单词。
如果需要更方便的访问,你也可以使用一个小的POJO对象:
var a = "Hello world" ; 
var chars = a.split(' ');

var words = [];
chars.forEach(function(str) { 
    words.push({word: str, length: str.length});
});

然后您可以像这样访问它们:
console.log(words[0].length); //5
console.log(words[0].word); //"Hello"

或者使用 map 来获取相同的 POJO:

var words = chars.map(function(str) { 
    return {word: str, length: str.length};
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接