我需要将key:value添加到对象中。
var a = {}
a['first'] = [a,bunch,of,stuff]
a['eight'] = [another,bunch,of,stuff]
a['two'] = [more,stuff]
但现在变量'a'包含
{八:[a,一堆,一些东西],首先:[另一个,一堆,一些东西],两个:[更多,东西]}
虽然我想要的是
{第一个:[另一个,一堆,一些东西],八个:[a,一堆,一些东西],两个:[更多,东西]}
我猜这个顺序是基于键的字母顺序。这是一个问题,因为我想使用{#each model as |key value|}
以与我想要的顺序相同的顺序将数据显示为hbs。
答案 0 :(得分:1)
在大多数语言列表中都有对象和集合没有的顺序。对象是关键值,没有顺序。
js arrays中的是类似列表的对象,其原型具有执行遍历和变异操作的方法。 JavaScript数组的长度和元素的类型都不固定。由于数组的长度可以随时改变,并且数据可以存储在数组中的非连续位置,因此不能保证JavaScript数组密集;这取决于程序员如何选择使用它们。一般来说,这些都是方便的特征;但如果这些功能不适合您的特定用途,您可以考虑使用类型化数组
这基本上意味着您可以将数据放在数组中的任何位置,并且它将在数组
中按顺序排列var idx = [];
idx[0] = 'hello';
idx[999] = 'world';
所以我相信你正在寻找的是
var listOfThings = [];
listOfThings.push({ 'first': [ 'things' ] })
listOfThings.push({ 'eight': [ 'stuff' ] })
listOfThings.push({ 'two': [ 'more'. 'things' ] })
然后你可以循环访问每个对象的键和值。
答案 1 :(得分:0)
示例您有一个对象,它已经有2个密钥对,a1& B2。然后你想添加k3,你可以使用这个方法:
let objData = [{"a1":10,"b2":20},{"b2":11,"a1":23}]
Object.keys(objData).map(
function (object) {
// add k3
objData[object]["k3"] = "foo"
})
然后,如果要按字母顺序对键进行排序,请使用以下方法:
function orderKeyAlfAsc(obj) {
let data = []
for (var i in obj)
data.push(Object.keys(obj[i]).sort().reduce((r, k) => (r[k] = obj[i][k], r), {}))
return data
}
let orderedData = orderKeyAlfAsc(objData)