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