我想创建一个没有密钥的JSON对象数组。如何实现这一点.. ??
例如[{8,0,2}, {20,0,2}]
。
var hh = 9
var mm = 8
var qty = 2
var data = [];
data.push({hh,mm,qty})
它提供的数据类似于[{hh:9,mm:8,qty:2}]
我想要像[{9,8,2},{9,3,4}]
答案 0 :(得分:1)
没有键值对象没有创建。所以这就是它从变量名
添加键名的原因看到你的错误。它是无效一个
var a = [{8,0,2}, {20,0,2}];
console.log(a)
您可以推送array
而不是object
var data = [];
var hh = 9
var mm = 8
var qty = 2
var data = [];
data.push([hh,mm,qty])
console.log(data)
答案 1 :(得分:0)
你不能。
Object Literal Property Value Shorthands允许您创建一个对象,其中的属性名称是从用于传递数据的变量名称推断出来的。
如果你没有变量名,那么JS引擎就没有什么可以用来确定属性名称应该是什么。
考虑使用函数。
console.log([time(8,0,2), time(20,0,2)]);
function time (hh, mm, qty) {
return {hh, mm, qty};
}
答案 2 :(得分:0)
最后得到的结果是有道理的。通过执行{hh,mm,qty},您实际上是在说“使用变量名作为键,将其值作为值”。如果您提供一个示例,说明您打算如何使用结果并访问变量(即最终所需对象的形状),这可能对我们有所帮助。
话虽如此,还有几种选择:
如果您真的希望您的对象看起来类似于{8,0,2},您可以使用这些值作为键(所有键都会转换为字符串),因此您可以执行以下操作:
var example1 = {8:undefined,0:undefined,2:undefined};
var example2 = {8:null,0:null,2:null};
var keys = [];
for(var name in example1) {
keys.push(name);
}
// keys = ["8","0","2"];
var otherKeys = Object.keys(example2);
// otherKeys = ["8","0","2"];
var hh = 9;
var mm = 8;
var qty = 2;
var obj = {};
obj[hh] = null;
obj[mm] = null;
obj[qty] = null;
//obj = {9:null,8:null,2:null};
我不确定这是否能解决您的问题或完全回答您的问题,但它可能会让您更深入地了解正在发生的事情以及原因。上面的示例是创建快速查找与字典的常用方法,其中的值将替换为null或undefined。
答案 3 :(得分:0)
您的示例使用ECMAScript 6的新功能,它是初始化对象属性的简写语法。您的示例中的这一行:
data.push({hh,mm,qty});
相当于这个详细的:
data.push({hh: hh, mm: mm, qty: qty});
JavaScript中的对象始终具有键和值。无法仅在普通对象中保存值。但是,还有另外两种解决方案。
一个使用数组:
data.push([hh, mm, qty]);
注意用方括号代替卷曲的方括号。这显然会将三个值的数组推送到data
数组。检索值时,您可以只引用它们的索引,因为数组的项目将始终保留其索引:
var data2 = [hh, mm, qty];
var hh2 = data2[0];
var mm2 = data2[1];
var qty2 = data2[2];
另一种“保存值”的方法是使用集合,但构造Set
对象仍然需要传递一个数组:
data.push(new Set([hh, mm, qty]));
在这种情况下访问数据不那么简单,因为该集合通常只允许您迭代它。与其他语言中的类似数据结构不同,JavaScript集将保留插入值的顺序。因此可以安全地将其转换为数组:
var mySet = new Set([hh, mm, qty]);
var data3 = Array.from(mySet);
var hh3 = data3[0];
var mm3 = data3[1];
var qty3 = data3[2];
您可以阅读有关集here的更多信息。
答案 4 :(得分:0)
您可以使用键我假设您想要一个JSON对象将其包装在另一个JSON对象上。
类似于{ [{8,0,2}, {20,0,2}] }
,但这有问题-它不是有效的JSON 。
我的一种情况也有类似的问题。然后我意识到
没有密钥就不可能存在顶级JSON!
考虑这个示例,您在JSON中还有另一个KV对,还有这个数组。
{
"somekey" : "somevalue",
[ {8,0,2}, {20,0,2} ]
}
您可以使用键“ somekey”来获取“ somevalue”。但是,您将如何访问阵列?你不能:(
我建议您对JSON使用顶级密钥,并将此数组作为其值。 示例:
{
"my array" : [ {8,0,2}, {20,0,2} ]
}