是否有可能在JavaScript对象文字中循环

时间:2014-08-14 12:04:52

标签: javascript

所以这是我的问题(也许是愚蠢的),有没有可能做到这一点:

 var data {
     "label" : value,
     "sets" : [             
         for (var i=0; i < item.length; i++)
         {
             somedata: "data"   
         }
     ]  
 }

达到结果:

 var data {
     "label" : value,
     "sets" : [  
         {
            somedata: "data1"
         },
         {
            somedata: "data2"
         }
     ]  
 }

很多帮助。

6 个答案:

答案 0 :(得分:2)

作为jimm101 has pointed out,您没有使用JSON,这只是JavaScript(其中的var证明了这一点)。如果要计算文字JavaScript对象内的值,可以使用立即调用的函数

var data = {
     "label" : value,
     "sets" : (function(){
         var arr = [];
         for (var i=0; i < item.length; i++) {
             arr.push( {somedata: "data" + i} ) ;
         }
         return arr;
      })()
 };

作为dystroy has pointed out您还可以使用Array.map返回已转换的数组,而无需立即调用的函数,这看起来更好一点

答案 1 :(得分:1)

您可以使用函数式编程:

var data = {
  "label" : "value",
  "sets" : item.map(function(_,i){ return {somedata: "data"+(i+1)} })  
}

答案 2 :(得分:1)

使用以下内容:

var data = {
    label: value,
    get sets(){
        var array = [];
        /* write your logic to fill the array here. */
        return array;
    }
}

参考here

答案 3 :(得分:0)

正如其他人评论的那样,JSON是数据,而不是代码。看起来您正在制作javascript代码,因为JSON也不会包含var data部分。

  • JSON =&gt; JavaScript Object Notation,一种表示数据的广泛方式。
  • javascsript object =&gt; javascript编程语言中使用JavaScript Object Notation的结构。

你可以这样做。

var data = {
    "label" : 'my_label',
};

item = ['one','two','another'];
data.sets = [];
for (var i=0; i < item.length; i++)
{
    data.sets.push({'somedata': item[i]});
}

答案 4 :(得分:0)

您可以使用数组理解(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions),但所有浏览器都不支持它(ECMAScript 6)。

var value = "test";
var item = ["data1", "data2", "data3"];

var data = {
    "label" : value,
    "sets" : [for (x of item) {somedata: x}]
};

/*
    Result : 

    data = {
        "label":"test",
        "sets":[
            {"somedata":"data1"},
            {"somedata":"data2"},
            {"somedata":"data3"}
        ]
    }
*/

答案 5 :(得分:-3)

您可以在JSON中使用嵌套数据,例如

var myObject = {
  "first": "John",
  "last": "Doe",
  "age": 39,
  "sex": "M",
  "salary": 70000,
  "registered": true,
  "interests": [ "Reading", "Mountain Biking", "Hacking" ],
  "favorites": {
    "color": "Blue",
    "sport": "Soccer",
    "food": "Spaghetti"
  }, 
  "skills": [
    {
      "category": "JavaScript",
      "tests": [
        { "name": "One", "score": 90 },
        { "name": "Two", "score": 96 }
      ] 
    },
    {
      "category": "CouchDB",
      "tests": [
        { "name": "One", "score": 79 },
        { "name": "Two", "score": 84 }
      ] 
    },
    {
      "category": "Node.js",
      "tests": [
        { "name": "One", "score": 97 },
        { "name": "Two", "score": 93 }
      ] 
    }
  ]
};

您可以使用程序中的循环

访问此类数组及其内容

来源:http://www.json.com/