jQuery中PHP array_column()
的等价物是什么?我需要数组中的数据而不需要循环,就像在PHP中一样。
答案 0 :(得分:12)
您可以使用.map()执行此操作。想象一下数据库行的获取。
var array = [
{
id: 1,
name: 'foo'
},
{
id: 2,
name: 'bar'
},
];
var names = arrayColumn(array, 'name');
console.log(names);
function arrayColumn(array, columnName) {
return array.map(function(value,index) {
return value[columnName];
})
}
答案 1 :(得分:1)
var data = [];
data.push({col1: 1, col2: 2});
data.push({col1: 3, col2: 4});
data.push({col1: 5, col2: 6});
Array.prototype.getColumn = function(name) {
return this.map(function(el) {
// gets corresponding 'column'
if (el.hasOwnProperty(name)) return el[name];
// removes undefined values
}).filter(function(el) { return typeof el != 'undefined'; });
};
console.log(data.getColumn('col1'));
结果
Array[3]
0: 1
1: 3
2: 5
可以通过获取数组的第一个元素并检查它是否具有相应的键来跳过.filter
部分。但有些行可能根本没有那个键,而其他行可能有它。
答案 2 :(得分:1)
这篇文章的底部是我的PHP array_column()
的JavaScript实现。不需要jQuery。
使用示例:
$ ./bin/swap2nd2
Alex are mere
Aelx are mree
实现:
var records = [
{id: 2135, first_name: 'John', last_name: 'Doe'},
{id: 3245, first_name: 'Sally', last_name: 'Smith'},
{id: 5342, first_name: 'Jane', last_name: 'Jones'},
{id: 5623, first_name: 'Peter', last_name: 'Doe'}
];
var first_names = arrayColumn(records, 'first_name');
// => ["John", "Sally", "Jane", "Peter"]
var last_names = arrayColumn(records, 'last_name', 'id');
// => {2135: "Doe", 3245: "Smith", 5342: "Jones", 5623: "Doe"}
var persons = arrayColumn(records, null, 'id');
// => {
// 2135: {id: 2135, first_name: 'John', last_name: 'Doe'},
// 3245: {id: 3245, first_name: 'Sally', last_name: 'Smith'},
// 5342: {id: 5342, first_name: 'Jane', last_name: 'Jones'},
// 5623: {id: 5623, first_name: 'Peter', last_name: 'Doe'}
// }
答案 3 :(得分:1)
使用箭头符号的Fabian答案的缩写版本:
let array = [
{
id: 1,
name: 'foo'
},
{
id: 2,
name: 'bar'
},
];
let names = array.map( el => el.name );
答案 4 :(得分:0)
我用它来构建一个对象~php之类的关联数组。通过选择源数组的.id,并将该id构建为新数组的索引,并包含旧源数组的相同内容。
var categoriesById={};
for(item in cacheObject.Categories){
categoriesById[cacheObject.Categories[item].id]=cacheObject.Categories[item];
}
答案 5 :(得分:-4)
你的意思是这样的:
var a = {};
a['alfa'] = 0;
a['beta'] = 1;
alert(a['alfa']);