为列表中的每个项目创建对象

时间:2018-03-13 04:18:35

标签: javascript oop

我有一个存储不同条形码编号的数组barcodeList。我想将其中的每一个都变成一个不同的对象,key是条形码编号并具有不同的属性。然后我想将它们全部放入一个大对象foodItems中。我怎么能这样做。

另外,我意识到数字不能用来制作变量,所以我想在它们前面放一个关键字。此外,image的{​​{1}}和ingredient值现在只是占位符。

通缉结果 -

null

来自foodItems = { Data9001: { image : null ingredients : null } Data9002: { image : null ingredients : null } }

对用户或关键字的任何推荐方法也将受到赞赏。

尝试:

barcodeList = [9001, 9002]

3 个答案:

答案 0 :(得分:0)

首先,我不明白,你是什么意思 I realized that numbers can't be used to make variables

但根据您的要求,您可以做类似的事情

var barcodeList = [9001,9002];
var foodItems = {};

for (var i = 0; i < barcodeList.length; i++) {
    foodItems[barcodeList[i]] = {
        image : null,
        ingredients : null
    }
}

console.log(foodItems)

编辑:

根据您的代码,您可以执行此操作

var barcodeList = [9001, 9002]
var foodItems = {};

var Food = function() {
    this.image = "noImage.png"
    this.nutrients = null
    this.ingredients = null
}

var foodItems = {}

for (var i = 0; i < barcodeList.length; i++) {
   var something = new Food()
   foodItems[barcodeList[i]] = something;
}

console.log(foodItems);

答案 1 :(得分:0)

使用括号表示法创建键

var barcodeList = [9001, 9002];

var foodItems = {};
barcodeList.forEach(function(item){
  foodItems['Data'+item] = {
      image : null,
      ingredients : null
  };
});

console.log(foodItems);

答案 2 :(得分:0)

不确定,你的回答有多远。我会用 Array.prototype.map()创建一个Data对象数组,然后使用reduce来连接。

几个指针 由于您需要键来开始使用数据,我会使用[&#39;数据&#39; +条形码]来创建它们。 我还将使用ES6扩展运算符来连接。

这是工作代码。

"use strict"
var barcodeList = [9001, 9002];

var result = barcodeList.map(function(barcode){
    return {
        ['Data'+barcode]: {
            image: null,
            ingredients : null
        }
    }   
}).reduce(function(prevValue,currValue){
    return {...prevValue, ...currValue};
});

console.log ( result);