首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >For...of循环,它调用字符串中的变量名。

For...of循环,它调用字符串中的变量名。
EN

Stack Overflow用户
提问于 2020-02-06 06:56:41
回答 2查看 132关注 0票数 2

一般情况下,JS和代码都是非常新的(假设为0知识库,不到一周),所以我对这个问题的解释将缺乏光泽,但下面是简单的说明。

我有一个函数,取两个obj的值。数组并将值添加到一起。然后将该和发送到一个新数组(allinit),最后对新数组进行数值排序。我需要将它们按数字顺序排列,并对每个变量应用一个唯一的字符串。

使用第二个函数(乐趣)和For...of循环,我生成了以下内容:

代码语言:javascript
复制
var allinit = [jim,dave,bob]

var fun = (allinit) => {

for (var element of allinit) {
    console.log( element + [the name of the variable] + 'initiative')
}

使用我分配的第一个函数:

代码语言:javascript
复制
var jim = 10  
var Dave =15   
var Bob = 20

如何使用这个For...of函数打印:

代码语言:javascript
复制
10 Bob Initiative

目前的“10项倡议”

通过调用元素10所代表的变量名?

立即的答案是使用obj/key Array。然而,据我所知,我无法对obj/key Array进行排序,它必须在计算完和之后进行数值排序。我很难保持事物的流动性,保持正确的顺序,同时仍然能够命名每个数字所代表的变量。我愿意接受建议或打印我的完整代码(大约50行)作为上下文。

编辑

这里是我的上下文代码的一些简写,请记住,这从数组和函数中删除了许多行。函数中可能有大约6个变量,每个变量都有自己的和.push()

代码语言:javascript
复制
var R = {
  a:5,
  d:2
};

var B = {
  a:10,
  d:18,
};

var Start = (R,B) => {
  var allinit = [

  ];

  var ai = (R.a + B.a);
  allinit.push(ai);

  var di = (R.d + B.d);
  allinit.push(di);

  allinit.sort((a,b)=>a-b);


  var fun = (allinit) => {

    for (var element of allinit) {
      console.log( elemement+ ** Variable name here** + ' inititive')
      }
  };

  console.log(fun(allinit));

};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-06 07:15:21

没有额外的上下文,因为“主动性”会让我想到RPG,我会假设这是为了类似的事情。我可能不在这里,但希望我不是!

这里的想法是,每个播放器,目前它们的名称和主动性值(但可扩展更多的东西)是由一个{}对象表示的,它们位于一个[]数组中。

正如您所看到的,我故意将它们按任意顺序排序,这样我们就可以看到排序的工作原理。

代码语言:javascript
复制
var players = [
  {name: "Jim", initiative: 10},
  {name: "Bob", initiative: 20},
  {name: "Dave", initiative: 15},
  {name: "Uthorr the Star-Slayer", initiative: 3},
];

// Declare a callback for sort - named here for clarity.
function sortByInitiative(p1, p2) {
  // Sort into ascending initiative order (switch up `p1` and `p2` for descending).
  return p1.initiative - p2.initiative;
}

// Sort players in place.
players.sort(sortByInitiative);

// Loop over them and print salient information.
players.forEach((player, index) => {
  console.log(`Player ${index + 1} is ${player.name} with initiative ${player.initiative}!`);
});

输出是

代码语言:javascript
复制
Player 1 is Uthorr the Star-Slayer with initiative 3!
Player 2 is Jim with initiative 10!
Player 3 is Dave with initiative 15!
Player 4 is Bob with initiative 20!
票数 2
EN

Stack Overflow用户

发布于 2020-02-06 07:11:14

不太确定我是否理解您的目的,但听起来您想要使用Object.entries,然后根据数字进行排序,然后处理。

代码语言:javascript
复制
var jim = 10  
var Dave = 15   
var Bob = 20

console.log(
    Object
        .entries({Bob, jim, Dave})   // [['Bob', 20], ['jim', 10], ['Dave', 15]]
        .sort((a, b) => a[1] - b[1]) // [['jim', 10], ['Dave', 15], ['Bob', 20]]
        .map((v) => `${v[0]} ${v[1]} initiative`)
        .join('\n')
);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60089283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档