将数组转换为对象并将对象属性设置为javascript中的数组值

时间:2013-12-23 04:33:42

标签: javascript arrays object

我编写了一个将数组转换为对象的函数,数组值是对象中属性值为true的属性。

在下面的代码中,第一部分的工作方式与预期一致。它使用数组值中的属性创建了一个对象,并将对象值设置为true。在我的第二个代码示例中,我试图推进它,某些对象属性具有不同于true的值。我被困在如何让它工作。

var myArray = ['mike', 'jenn', 'fred', 'jonny', 'frank'];

var myFunc = function (array) {
    var myObj = {};
    for (var i = 0; i < array.length; i += 1) {
        myObj[array[i]] = true;
    }
    return myObj;
};


var myFunc = function (array) {
    var myObj = {};
    for (var i = 0; i < array.length; i += 1) {
      if (array[i] = 'jenn') {
        myObj[array[i]] = 'is awesome';
      } else if (array[i] = 'mike') {
        myObj[array[i]] = 'is a rookie';
      } else {
        myObj[array[i]] = 'help';
      }
    }
    return myObj;
};

1 个答案:

答案 0 :(得分:2)

您正在使用赋值运算符,而不是比较运算符。你可以像这样修复它

if (array[i] === 'jenn') {
...
} else if (array[i] === 'mike') {
...

现在,您可能想知道为什么使用===代替==,就像在大多数语言中一样。原因是,类型类型强制。即使被比较的数据属于不同类型,==也会尝试将它们中的任何一种转换为另一种类型并产生结果。但在大多数情况下,这是不可取的。

然而,只有当变量的类型也相同且值也匹配时,===才会将表达式计算为true

因此,使用===总是更好。