我需要采取像这样的对象数组......
var users = [{
id: 0,
full_name: 'None',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
},
{
id: 1,
full_name: 'Jason Davis',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
},
{
id: 2,
full_name: 'Eric',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}];
从上面的对象构建这3个数组。数组键号应匹配所有。所以使用full_name = Jason Davis的数组应匹配ID数组
上的数组键1这个想法是我应该能够通过这样做来重建上面的对象......
id[1]
full_name[1]
gravatar_url[1]
以上这些都应该与用户Jason Davis一起映射到对象。
var id = [0, 1, 2];
var full_name = [
'None',
'Jason Davis',
'Eric'
];
var gravatar_url = [
'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80',
'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80',
'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
];
推理
我正在使用popover选择器库构建它......
该库只接受单个数据数组,显示为每个项目。在此图像中,它是用户名。
(为了澄清,上面的图像我手动将缩略图添加到DOM中,库还不接受每个项目的第二个数据)
通过做我的问题,我可以将用户图像分配给另一个数组
该库构建HTML这样的项目......
for (var i in this.options.items) {
var itemElement = $(this.options.templates.pickerItem);
itemElement.find('i').html(this.options.items[i]);
itemElement.data('pickerValue', this.options.items[i])
.on('click.picker', itemClickFn);
this.picker.find('.picker-items').append(itemElement);
}
它调用this.options.items[i]
来获取名称。如果我有自己的第二个图像阵列,我可以使用该键以其名称显示正确的用户图像!
答案 0 :(得分:2)
最简单的方法是遍历数组并将每个属性插入到适当的数组中:
var id = [], full_name = [], gravatar_url = [];
for(var i = 0; i < users.length; i++) {
var u = users[i];
id.push(u.id);
full_name.push(u.full_name);
gravatar_url.push(u.gravatar_url);
}
答案 1 :(得分:1)
您可以将.map用于此
试试这个
var id=users.map(function(x){ return x.id; });
console.log(id);
var full_name=users.map(function(x){ return x.full_name; });
console.log(full_name);
var gravatar_url=users.map(function(x){ return x.gravatar_url; });
console.log(gravatar_url);
<强>段强>
var users = [{
id: 0,
full_name: 'None',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
},
{
id: 1,
full_name: 'Jason Davis',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
},
{
id: 2,
full_name: 'Eric',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}];
var id=users.map(function(x){ return x.id; });
console.log(id);
var full_name=users.map(function(x){ return x.full_name; });
console.log(full_name);
var gravatar_url=users.map(function(x){ return x.gravatar_url; });
console.log(gravatar_url);
答案 2 :(得分:1)
您可以在此处使用地图功能。
var names = users.map(function(item) {
return item['full_name'];
});
现在名称是你想要的full_names数组。
答案 3 :(得分:1)
这是一种简单的做事方式。
过程是 -
读取数组,根据需要将数据存储到特定的数组中。使用索引访问它们。
var users = [{
id: 0,
full_name: 'None',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
},
{
id: 1,
full_name: 'Jason Davis',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
},
{
id: 2,
full_name: 'Eric',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}];
var id_arr=[];
var name_arr=[];
var gravatar_url_arr=[];
for (var i=0; i<users.length;i++)
{
id_arr[i] = users[i].id;
name_arr[i] = users[i].full_name;
gravatar_url_arr[i] = users[i].gravatar_url;
}
//Displaying all arrays
console.log(id_arr);
console.log(name_arr);
console.log(gravatar_url_arr);
//Get's the result what you need
console.log(id_arr[1]);
console.log(name_arr[1]);
console.log(gravatar_url_arr[1]);
演示 - JSFiddle
答案 4 :(得分:0)
尝试使用for
循环,while
循环,Object.keys()
var len = users.length, max = len * len, res = [];
for (var i = 0, j = len; i < max; i++) {
if (!res[i % j]) {
res[i % j] = Array();
var k = 0;
while (k < len) {
res[i % j][k] = users[k][Object.keys(users[i % j])[i % j]];
++k;
}
}
}
var id = res[0], full_name = res[1], gravatar = res[2];
var users = [{
id: 0,
full_name: 'None',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 1,
full_name: 'Jason Davis',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}, {
id: 2,
full_name: 'Eric',
gravatar_url: 'http://gravatar.com/avatar/31b64e4876d603ce78e04102c67d6144?s=80'
}];
var len = users.length, max = len * len, res = [];
for (var i = 0, j = len; i < max; i++) {
if (!res[i % j]) {
res[i % j] = Array();
var k = 0;
while (k < len) {
res[i % j][k] = users[k][Object.keys(users[i % j])[i % j]];
++k;
}
}
}
var id = res[0], full_name = res[1], gravatar = res[2];
console.log(JSON.stringify(res, null, 2)
,"\n\n", id[1], full_name[1], gravatar[1])
&#13;