Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从键为单词、值为字符串长度的数组生成对象?_Javascript_Key Value - Fatal编程技术网

Javascript 如何从键为单词、值为字符串长度的数组生成对象?

Javascript 如何从键为单词、值为字符串长度的数组生成对象?,javascript,key-value,Javascript,Key Value,长期潜伏者第一次海报。如果我的格式不好或出错,请提前道歉 const myArray = ["hello", "hi", "beep", "boop", "cromulent"]; var lengths = myArray.map(function(word){ return word.length }) Object.entries(myArray); console.log(myAr

长期潜伏者第一次海报。如果我的格式不好或出错,请提前道歉

const myArray = ["hello", "hi", "beep", "boop", "cromulent"];

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

Object.entries(myArray);
console.log(myArray + lengths);
如何将数组myArray转换为打印:“您好,您好,嘟嘟,boop,cromulent5,2,4,4,9”

将字符串打印为键,将值打印为长度。我曾考虑使用foreach循环或for of循环,但我不知道如何设置键和值

因此,最终看起来是这样的:

{你好:5,你好:2,哔声:4,哔声:4,克罗姆伦特:9}


非常感谢您的帮助,我对javascript非常陌生,我一直在思考这个问题。

任何一种类型的循环都可以正常工作。这里有一个forEach的例子

constmyarray=[“你好”、“你好”、“嘟嘟”、“boop”、“cromulent”];
var obj={};
myArray.forEach(函数(i){
obj[i]=i.长度;
});

控制台日志(obj)任何一种循环都可以正常工作。这里有一个forEach的例子

constmyarray=[“你好”、“你好”、“嘟嘟”、“boop”、“cromulent”];
var obj={};
myArray.forEach(函数(i){
obj[i]=i.长度;
});

控制台日志(obj)基于Dinh Carabus所说的,您可以使用ES6的
Array.prototype.reduce()
方法

constmyarray=[“你好”、“你好”、“嘟嘟”、“boop”、“cromulent”];
让长度=myArray.reduce((a,x)=>({
A.
[x] :x.长度
}), {});
作为一个很少使用箭头函数的人,我不得不进行一些搜索,以了解这种语法实际上是如何工作的。如果您也很难理解,我将其转换为使用
function()
而不是箭头函数:

let length=myArray.reduce(函数(a,x){
返回{
A.
[x] :x.长度
}
}, {});
解释总是个好主意,让我们回顾一下,好吗

Array.prototype.reduce
需要传入两个参数,一个函数和一个初始值

传入初始值可以将其缩减为对象。在本例中,我们传入一个要添加到其中的对象,直到遍历完数组为止

对于函数,我们使用两个参数——函数返回的前一个值和当前值。 “spread”操作符将其前面的所有值相加,您将向对象中添加当前值作为键(“x”)和长度(“x.length”)

一、 我自己也很惊讶有如此高效的东西存在

当然,
forEach
for
循环也可以很好地工作——正如另一个答案所示

我使用的资料来源:

  • (尽管也有大量文档)
  • (美化最初供审查的准则)
此外,我还决定为y'all编写一个函数,该函数接受一个数组并返回一个对象,该对象的值作为其键,字符串的长度作为其值:

函数还原数组(数组){
返回数组.reduce((a,x)=>({
A.
[x] :x.长度
}), {});
}

log(reduceArray([“你好”,“世界!”])基于Dinh Carabus所说的,您可以使用ES6的
Array.prototype.reduce()
方法

constmyarray=[“你好”、“你好”、“嘟嘟”、“boop”、“cromulent”];
让长度=myArray.reduce((a,x)=>({
A.
[x] :x.长度
}), {});
作为一个很少使用箭头函数的人,我不得不进行一些搜索,以了解这种语法实际上是如何工作的。如果您也很难理解,我将其转换为使用
function()
而不是箭头函数:

let length=myArray.reduce(函数(a,x){
返回{
A.
[x] :x.长度
}
}, {});
解释总是个好主意,让我们回顾一下,好吗

Array.prototype.reduce
需要传入两个参数,一个函数和一个初始值

传入初始值可以将其缩减为对象。在本例中,我们传入一个要添加到其中的对象,直到遍历完数组为止

对于函数,我们使用两个参数——函数返回的前一个值和当前值。 “spread”操作符将其前面的所有值相加,您将向对象中添加当前值作为键(“x”)和长度(“x.length”)

一、 我自己也很惊讶有如此高效的东西存在

当然,
forEach
for
循环也可以很好地工作——正如另一个答案所示

我使用的资料来源:

  • (尽管也有大量文档)
  • (美化最初供审查的准则)
此外,我还决定为y'all编写一个函数,该函数接受一个数组并返回一个对象,该对象的值作为其键,字符串的长度作为其值:

函数还原数组(数组){
返回数组.reduce((a,x)=>({
A.
[x] :x.长度
}), {});
}

log(reduceArray([“你好”,“世界!”])
var length=myArray.reduce((a,x)=>({…a[x]:x.length}),{})
var length=myArray.reduce((a,x)=>({…a[x]:x.length}),{})