在jQuery中,PHP的array_column()
等效於什麼?我需要使用數組中的數據,而不使用循環,方式與PHP中相同。jQuery中是否有與PHP的array_column()等價的函數?
3
A
回答
-3
你的意思是這樣的:
var a = {};
a['alfa'] = 0;
a['beta'] = 1;
alert(a['alfa']);
+1
不回答問題 – 2014-10-26 20:32:50
+1
閱讀正確的問題。 – aBhijit 2015-12-19 05:16:46
0
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
部分鍵。但是有些行可能根本沒有這個關鍵字,而其他行可能有。
1
在這篇文章的底部是我的PHP的array_column()
的JavaScript實現。不需要jQuery。
實例:
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'}
// }
實現:
/**
* Source: http://stackoverflow.com/a/33841999/1402846
*
* This function is (almost) equivalent to array_column() in PHP (http://php.net/manual/function.array-column.php).
*
* Differences between this function and PHP's array_column():
* <ul>
* <li>If <code>indexKey</code> is not found in an element of the input array, the behaviour of this function is undefined.
* In PHP's array_column(), the element will be put into the end of the array. It is possible in PHP because PHP does not
* distinguish between arrays and dictionaries, but it is not possible in JavaScript because Arrays and Objects are different.
*
* <li>Associative arrays (dictionaries) in PHP are ordered, JavaScript objects are not (http://stackoverflow.com/a/5525820/14028460.
* Do not make assumptions on the ordering of the keys in JavaScript objects.
*
* <li>If the value of an element at <code>inputKey</code> is not a string, the result of this function and the PHP function
* doesn't make much sense. For example, in PHP,
* <code>
* $records = array(
* array('id' => true, 'last_name' => 'Doe')
* );
* array_column($records, 'last_name', 'id');
* </code>
* gives <code>Array([1] => Doe)</code>, or maybe <code>Array([0] => Doe)</code> due to a bug ({@link https://bugs.php.net/bug.php?id=68553}). But, in JavaScript,
* <code>
* var records = [
* {id: true, last_name: 'Doe'},
* ];
* arrayColumn(records, 'last_name', 'id');
* </code>
* gives <code>{true: "Doe"}</code>. Therefore, it is strongly advised to make sure that the value at <code>indexKey</code> of
* each input element is a string.
* </ul>
*
* @param {Array|Object} inputArray The input array, it must either contain objects only or arrays only.
* If it is an object instead of an array, it would be converted to an array first.
* @param {int|string|null} columnKey If the input array contains objects, this parameter is the key in each object.
* If the input array contains arrays, this parameter is the index in each array.
* If the key or index is not valid, this element is skipped.
* This parameter may also be <code>null</code>.
* @param {int|string|null} [indexKey=null] If the input array contains objects, this parameter must be a valid key in each object.
* If the input array contains arrays, this parameter must be a valid index in each array.
* If it is not a valid key or index, the behaviour is undefined.
* This parameter may also be <code>null</code>.
* @returns {Array|Object} If <code>indexKey</code> is <code>null</code>, this function returns an array which is parallel
* to the input array. For each element <code>elem</code> in the input array, the element in the
* output array would be <code>elem[columnKey]</code>, or just <code>elem</code> if <code>columnKey</code>
* is <code>null</code>.
* If <code>indexKey</code> is <b>not</b> <code>null</code>, this function returns an object.
* For each element <code>elem</code> in the input array, the output object would contain an
* element <code>elem[columnKey]</code>, or just <code>elem</code> if <code>columnKey</code>
* is <code>null</code>, at the key <code>elem[indexKey]</code>. If the value of <code>elem[indexKey]</code>
* of some elements in the input array are duplicated, the element in the return object would
* correspond to the element nearest to the end of the input array.
* @example
* 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'}
* }
*/
function arrayColumn(inputArray, columnKey, indexKey)
{
function isArray(inputValue)
{
return Object.prototype.toString.call(inputValue) === '[object Array]';
}
// If input array is an object instead of an array,
// convert it to an array.
if(!isArray(inputArray))
{
var newArray = [];
for(var key in inputArray)
{
if(!inputArray.hasOwnProperty(key))
{
continue;
}
newArray.push(inputArray[key]);
}
inputArray = newArray;
}
// Process the input array.
var isReturnArray = (typeof indexKey === 'undefined' || indexKey === null);
var outputArray = [];
var outputObject = {};
for(var inputIndex = 0; inputIndex < inputArray.length; inputIndex++)
{
var inputElement = inputArray[inputIndex];
var outputElement;
if(columnKey === null)
{
outputElement = inputElement;
}
else
{
if(isArray(inputElement))
{
if(columnKey < 0 || columnKey >= inputElement.length)
{
continue;
}
}
else
{
if(!inputElement.hasOwnProperty(columnKey))
{
continue;
}
}
outputElement = inputElement[columnKey];
}
if(isReturnArray)
{
outputArray.push(outputElement);
}
else
{
outputObject[inputElement[indexKey]] = outputElement;
}
}
return (isReturnArray ? outputArray : outputObject);
}
0
我使用它來建立一個對象〜像關聯數組的php。通過選擇源數組的.id,並將該id作爲新數組的索引幷包含舊源數組的相同內容。
var categoriesById={};
for(item in cacheObject.Categories){
categoriesById[cacheObject.Categories[item].id]=cacheObject.Categories[item];
}
2
您可以使用.map()來實現。 Immagine取數據庫行。
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. 在PHP的explode()函數的C++中是否有等價物?
- 2. 在JavaScript或jQuery中是否有與Python的所有函數等價的東西?
- 3. 是否有與Stata中Excel的COUNTIFS函數等價的功能?
- 4. PHP中是否有與.NET數據集等價的東西?
- 5. 在jQuery中是否有等價的eval()?
- 6. PHP:是否有一個isLetter()函數或等價的?
- 7. 是否有GetProperty或等價函數?
- 8. Perl dbd-sqlite,是否有與.import函數等價的功能?
- 9. jQuery - JavaScript等價於PHP的htmlentities()函數
- 10. 在MongoDb&PHP中是否有與MySql的getLastInsertID()等價的功能?
- 11. 在Ruby/Rails中是否有與PHP的print_r等價的東西?
- 12. 是否有與char *的_mm_loadu_ps等價的?
- 13. PHP的ArrayObject是否有in_array等價物?
- 14. 是否有C#等價於PHP的array_key_exists?
- 15. 是否有與_mm_insert_epi32等價的SSE2?
- 16. 是否有與Gtk#Windows等價的Form.Showdialog?
- 17. 是否有與AssertJ庫等價的Kotlin?
- 18. 是否有與ListBox.ItemTemplate等價的RichTextBox?
- 19. 是否有與ITypedList等價的Silverlight?
- 20. 是否有與.Net等價的JavaBlackBelt?
- 21. 是否有與erlang等價的ipython?
- 22. 是否有與MySql等價的Profiler? 「
- 23. Python中是否存在與「Filter」函數等價的Swift?
- 24. jQuery等價的JavaScript函數
- 25. fortran中的Btest函數,python中是否有任何等價物?
- 26. 在熊貓中,函數「all」中是否有等價的python?
- 27. 是否有任何等價的函數返回PHP中位置`X`的字符?
- 28. 是否有與PHP的mail()函數等效的nodejs
- 29. PHP是否與|| =運算符等價?
- 30. php checkdnsrr是否與mysql等價?
http://stackoverflow.com/questions/11190407/javascript-max-for-array-column – 2014-10-26 16:14:25
任何你使用會循環數組,如果不管它是一個本地方法或不 – charlietfl 2014-10-26 16:23:59
的http://計算器.com/questions/7848004/get-column-from-a-two-dimensional-array – zavg 2014-10-26 20:19:13