从给定的变量创建一个集合.如何获取对象'键'值以对应给定变量的名称

creating a set from given variables. how to get the object's key's values to correspond to names of given variables?

本文关键字:变量 创建 一个 何获 集合 取对象      更新时间:2023-09-26

我正在尝试测试一组给定的变量。为了组织这个集合,我将变量作为键添加到一个对象中。

我认为我是在正确的轨道上动态添加键根据变量名称。如何确保每个键的值与原始给定数字的值相对应?

的例子:

var num1 = 43;
var num2 = 597;
var num3 = 5662682;

我希望我的对象基本上是这样显示的:

{num1: 43, num2: 597, num3: 5662682}

我试过:

function makeObj () {
  var obj = {};
  for (var i = 1; i <= 3; i++) {
    obj["num" + i] = "num" + i;
  }
  return obj;
}

,但显然,没有引用变量。它存储一个无用的字符串。

{ num1: 'num1', num2: 'num2', num3: 'num3' }

我如何使上述变量(num1, num2, num3)的值成为对象内部同名键的值?

我还应该补充说,我希望用标准的Javascript和/或原型来做到这一点。没有库之类的东西

可以使用eval

http://jsfiddle.net/afrievalt/w7fm3/

var num1 = 43;
var num2 = 597;
var num3 = 5663683;
function makeObj () {
  var obj = {};
  for (var i = 1; i <= 3; i++) {
    obj["num" + i] = eval("num" + i);
  }
  return obj;
}

请不要告诉Crockford先生我用了eval。http://javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/

@sabof和我喜欢使用数组:

var nums = [];
nums.push(43);
nums.push(597);
nums.push(5663683);
function makeObj () {
  var obj = {};
  for (var i = 0; i <= nums.length; i++) {
    obj["num" + (i+1)] = nums[i];
  }
  return obj;
}