所以这是我的问题(也许是愚蠢的),有没有可能做到这一点:
var data {
"label" : value,
"sets" : [
for (var i=0; i < item.length; i++)
{
somedata: "data"
}
]
}
达到结果:
var data {
"label" : value,
"sets" : [
{
somedata: "data1"
},
{
somedata: "data2"
}
]
}
很多帮助。
答案 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
部分。
你可以这样做。
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 }
]
}
]
};
您可以使用程序中的循环
访问此类数组及其内容