我有下面的数组,它不是循环的理想选择。如果我想获得数组中每个项目的标题,就没有简单的方法,因为键是唯一的(不要问我如何最终得到一个遍地都是的数组)。

productsSelectedArray = [
  {cpu: {title: "Core i7 2.4GHz", price: 200}},
  {memory: {title: "8GB", price: 100}},
  {videoCard: {title: "nVidia 6500-GTS", price: 400}},
  {display: {title: "27-inch LCD", price: 200}},
  {extraBattery: {title: "", price: ""}},
  {antivirus: {title: "", price: ""}},
  {mouse: {title: "Logitech 232", price: 50}},
  {extendedWarranty: {title: "", price: ""}}
]


我希望能够遍历它,以便它返回

“ Core i7 2.4GHz”

“ 8GB”

“ nVidia 6500-GTS”

“ 27英寸液晶显示器”





“ Logitech 232”



我想将上面的数组转换成下面的数组。实质上,这是删除每个哈希的第一个键,并将其余的哈希值移到另一个位置(新的“键”是数组的索引)。

newProductsSelectedArray = [
  {title: "Core i7 2.4GHz", price: 200},
  {title: "8GB", price: 100},
  {title: "nVidia 6500-GTS", price: 400},
  {title: "27-inch LCD", price: 200},
  {title: "", price: ""},
  {title: "", price: ""},
  {title: "Logitech 232", price: 50},
  {title: "", price: ""}
]


这样,我可以循环浏览它,并像newProductsSelectedArray[i].title(带有循环)那样按顺序显示所有标题,依此类推。

我已经尝试寻找解决方案一个小时左右了,但是我仍然不确定该怎么做。 delete只是删除整个键以及所有值。我不知道如何删除键并“转移”其余的哈希值,而且我也不认为会有这样的功能,因为通常这样做是一种荒谬的事情。

主要问题是键名各不相同,这使我无法循环显示所有标题。

我可以使用Object.keys(productsSelectedArray[i])[0]编写一个使所有键名都为item的循环,然后可以使用productsSelectedArray[i].item.title循环,但是也许有一个更优雅的解决方案?

最佳答案

这应该为您工作:

arrayWithTitles = productsSelectedArray.map(function (product) {
    var obj = {};
    for(key in product){
      obj = product[key];
    }
    return obj;
});

关于javascript - 有什么方法可以用数组索引替换哈希表中的键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24613192/

10-11 13:37
查看更多