2017-07-20 28 views
0
存储在JavaScript阵列

我是新使用JS,我不得不函数存储对象数组角模型, 例如:如何使用angularjs

function getSpec(){ 
    debugger 
    var i; 
    for(i=0;i<main.specifications.length;i++){ 
     main.newProduct.Specification= ("{\""+main.specifications[i].key+"\":\""+main.specifications[i].value+"\"}"); 

    } 
} 

main.newProduct.Specification是一个模式,我想存储键和值根据数组长度。 ,我想存储到数据库像:{"Ram":"1GB","Color":"BLACK"}

我该怎么办?

回答

0

如果main.newProduct.Specification为对象,那么你可以使用main.newProduct.Specification[main.specifications[i].key] = main.specifications[i].value;

function getSpec(){ 
     debugger 
     var i; 
     for(i=0;i<main.specifications.length;i++){ 
     var temp = {}; 
     temp[main.specifications[i].key]=main.specifications[i].value;     
     main.newProduct.Specification.push(temp); 
     } 
    } 
+0

嗨,感谢您的反馈,我认为这是一个误解,我的意思是我可以显示键的价值和价值的价值..但如果我把它放在里面,它只显示一个,但我想显示所有数组长度的值,如果我有长度= 4,那么我想在一个显示器中显示它们,可以吗? –

+0

我修改了答案。我可以知道你如何在UI中展示吗? –

0

更改getSpec()创建如下键值对:

function getSpec(){ 
    debugger 
    var i; 
    main.newProduct.Specification = main.newProduct.Specification || {}; // This is optional, and is just a fallback 

    for(i = 0; i < main.specifications.length; i++) { 
    main.newProduct.Specification[main.specifications[i].key] = main.specifications[i].value; 
    } 
} 

上面有一个空的对象初始化main.newProduct.Specification,如果它是不是已经初始化并将所有属性追加到它。

更新

上面也可以减小到这样的:

function getSpec() { 
    main.newProduct.Specification = main.specifications.reduce(function(obj, item) { 
    obj[item.key] = item.value; 
    return obj; 
    }, {}); 
} 
0

使用ES6 for...of尝试此溶液循环:

let mainObj = { 
 
    "specifications" : [ 
 
    { "key":"Ram", "value":"1GB" }, 
 
    { "key":"Color", "value":"BLACK" } 
 
    ] 
 
}; 
 

 
mainObj.newProduct = { 
 
\t "specifications" : {} 
 
} 
 
for (let i of mainObj.specifications) { 
 
    mainObj.newProduct.specifications[i.key] = i.value; 
 
} 
 

 
console.log(mainObj.newProduct.specifications);