Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用for循环创建javascript对象_Javascript_Loops_Object - Fatal编程技术网

如何使用for循环创建javascript对象

如何使用for循环创建javascript对象,javascript,loops,object,Javascript,Loops,Object,我正在尝试编写一个for循环来创建一个columns对象,如下所示: columns: [ {data: "productCode", title: "Product Code", width: "7%"}, {data: "brand", title: "Brand", width: "10%"}, ] 到目前为止,我已经尝试: 定义每个列的属性: var ltColumns = { "col1": {data: "productCode", title: "Pro

我正在尝试编写一个for循环来创建一个
columns
对象,如下所示:

columns: [
    {data: "productCode", title: "Product Code", width: "7%"},
    {data: "brand", title: "Brand", width: "10%"},
]
到目前为止,我已经尝试:

定义每个列的属性:

var ltColumns = {

    "col1": {data: "productCode", title: "Product Code", width: "7%" },

    "col2": {data: "brand", title: "Brand", width: "10%"}
};
使用
for
循环填充列属性

columns: [
        for (var key in ltColumns) {
            {
             data: ltColumns[key].data, 
             title: ltColumns[key].title, 
             width: ltColumns[key].width}
            }
         ];
但是,我不断收到错误
的意外标记。有人能帮我解释一下语法吗


谢谢

您需要在阵列外部执行
for
循环:

var columns = [];

for(var key in ltColumns) {
  columns.push({
    data: ltColumns[key].data, 
    title: ltColumns[key].title, 
    width: ltColumns[key].width
  });
}
我建议你看看

我上面使用的方法是
Array.prototype.push
,它将一个项推送到数组的末尾


注意:这是一个常见的ES5实现。

您需要在阵列外部执行
for
循环:

var columns = [];

for(var key in ltColumns) {
  columns.push({
    data: ltColumns[key].data, 
    title: ltColumns[key].title, 
    width: ltColumns[key].width
  });
}
我建议你看看

我上面使用的方法是
Array.prototype.push
,它将一个项推送到数组的末尾

注意:这是一个常见的ES5实现。

ES7 这种语法,也称为数组理解,是称为ES7的JavaScript版本中的一个非常新的特性。如果要使用此功能(目前只有firefox支持此功能),可以执行以下操作:

columns: [
    for (i of ltColumns)
    {
        data : i.data,
        title: i.title,
        width: i.width
    }
]    
columns: Object.keys(ltColumns).map(function (item) { return
    ltColumns[item] })
ES6 一个新版本的JavaScript现在在流行浏览器ES6中得到了很好的支持,它的一些特性可以帮助您执行以下操作:

columns: Object.keys(ltColumns).map(item => ltColumns[item])
ES5 ES5是JavaScript的当前版本:

方法1 你可以做:

columns: [
    for (i of ltColumns)
    {
        data : i.data,
        title: i.title,
        width: i.width
    }
]    
columns: Object.keys(ltColumns).map(function (item) { return
    ltColumns[item] })
方法2
for in
循环也是一个选项:

for (var i in ltColumns)
    columns[i] = ltColumns[i];
ES7 这种语法,也称为数组理解,是称为ES7的JavaScript版本中的一个非常新的特性。如果要使用此功能(目前只有firefox支持此功能),可以执行以下操作:

columns: [
    for (i of ltColumns)
    {
        data : i.data,
        title: i.title,
        width: i.width
    }
]    
columns: Object.keys(ltColumns).map(function (item) { return
    ltColumns[item] })
ES6 一个新版本的JavaScript现在在流行浏览器ES6中得到了很好的支持,它的一些特性可以帮助您执行以下操作:

columns: Object.keys(ltColumns).map(item => ltColumns[item])
ES5 ES5是JavaScript的当前版本:

方法1 你可以做:

columns: [
    for (i of ltColumns)
    {
        data : i.data,
        title: i.title,
        width: i.width
    }
]    
columns: Object.keys(ltColumns).map(function (item) { return
    ltColumns[item] })
方法2
for in
循环也是一个选项:

for (var i in ltColumns)
    columns[i] = ltColumns[i];
请小心,因为它比使用
的常规解决方案在
中的运行速度慢

最好为常见操作创建辅助函数:

function values(obj) {
    return Object.keys(obj).map(function (e) { return obj[e]; });
}

someObject.columns = values(ltColumns);
但最好使用最快的帮助函数解决方案

function values(obj) {
    var result = [];

    for (var name in obj)
        if (obj.hasOwnProperty(name))
            result.push(obj[name]);

    return result;
}
请小心,因为它比使用
的常规解决方案在
中的运行速度慢

最好为常见操作创建辅助函数:

function values(obj) {
    return Object.keys(obj).map(function (e) { return obj[e]; });
}

someObject.columns = values(ltColumns);
但最好使用最快的帮助函数解决方案

function values(obj) {
    var result = [];

    for (var name in obj)
        if (obj.hasOwnProperty(name))
            result.push(obj[name]);

    return result;
}

未过滤的
因为in
循环是危险的,我建议不要使用未过滤的
因为in
循环是危险的,我建议不要使用它们