假设我有以下数据结构
theValues = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
Run Code Online (Sandbox Code Playgroud)
获取ID列表的最佳Python方法是[123,321,231]什么?
如果这是javascript,我可能只是使用匿名函数对列表中的每个元素使用过滤器,但我似乎无法找到Python等价物.我知道我可以做以下事情:
myList = []
for v in theValues: myList.append(v["id"])
Run Code Online (Sandbox Code Playgroud)
最后,我想将字典列表缩减为以逗号分隔的列表,我想我可以用连接来做...虽然这种语法对我来说仍然很奇怪.有没有更好的办法?
myListIds = ",".join( myList )
Run Code Online (Sandbox Code Playgroud)
这是最常见的做法吗?在PHP中,我可以做类似的事情:
$myListIds = implode(",", array_map( values, function( v ) { return v["ID"]; } ));
Run Code Online (Sandbox Code Playgroud) 起初我有这个(在wamp工作但不在我的web服务器中)
$ids = array_map(function($item) { return $item['user_id']; }, $data['student_teacher']);`
Run Code Online (Sandbox Code Playgroud)
所以我尝试将代码转换为该代码,但没有任何工作(我从输出端获得数组,数组,数组,数组,数组,数组)
$ids = array_map($this->myarraymap(null), $data['student_teacher']);
function myarraymap($item) {
return $item['user_id'];
}
Run Code Online (Sandbox Code Playgroud) 我正在使用此代码从csv文件中获取数组:
array_map('str_getcsv', 'file.csv')
Run Code Online (Sandbox Code Playgroud)
但是如何str_getcsv()在array_map函数中使用它时设置分隔符?
我目前正在尝试一些通用的方法来验证和清理我的表单输入.当然,有数百种方法可以做到这一点我的特殊挑战我的任务涉及到我的帖子数据并array_map()在我把它带进来时正常运行.我有我自己的自定义功能设置运行filter_var()并preg_match()根据需要运行在我修改数据后,我在array_map()之后的数据,然后mysqli_real_escape_string()在运行SQL之前运行它来处理它.你会注意到我htmlspecialchars()一遍又一遍地跑.是否可以在我的帖子数据上同时运行trim和htmlspecialchars.我是为了效率,所以欢迎任何其他建议.
// Trim all the incoming data
$trimmed = array_map('trim', $_POST);
// Assume invalid values
$un = $fn = $ln = $e = $pn = $bio = FALSE;
// Check username
$un = validateUsername(htmlspecialchars($trimmed['uname']));
// Check first name
$fn = validateName(htmlspecialchars($trimmed['fname']));
// Check last name
$ln = validateName(htmlspecialchars($trimmed['lname']));
// Check email address
$e = validateEmail(htmlspecialchars($trimmed['email']));
Run Code Online (Sandbox Code Playgroud)
...等等
我遇到了一个奇怪的要求,我在最后几个小时努力完成它.下面是我的字符串数组(只是一个例子,实际数组包含大约2500条记录):
var testArray = [
"130,839.9,855,837.3,848.65,3980489",
"129,875,875,828.1,833.25,6926078",
"138,891.3,893.3,865.2,868.75,5035618"
]
Run Code Online (Sandbox Code Playgroud)
我们这里有3个元素,每个元素是comma分开的(每个元素有6个项目).即:
testArray[0] = "130,839.9,855,837.3,848.65,3980489"
Run Code Online (Sandbox Code Playgroud)
我的问题是,我想testArray根据每个元素的第一项进行排序,并将其转换为具有所有值的数组的数组为float,因此输出将是:
[
[129, 875, 875, 828.1, 833.25, 6926078],
[130, 839.9, 855, 837.3, 848.65, 3980489],
[138, 891.3, 893.3, 865.2, 868.75, 5035618]
]
Run Code Online (Sandbox Code Playgroud)
我能够对整个数组进行排序而不是整个数组,我尝试使用拆分然后排序而没有运气.
有人可以帮我解决这个问题,如果我不清楚,请告诉我.
有没有办法像在正常的 for 循环中那样使用内置方法break或对其continue进行迭代array_map()?
例如:
array_map(function (String s) {
if (condition is met){
continue;
}
return stuff;
}, $array_to_map);
Run Code Online (Sandbox Code Playgroud) 我有一组称为“目录”的对象,其中包括人员及其工作的列表。问题是一个人可以承担多个角色,我想在渲染过程中将“工作”分组到同一个“id”下。这是我的数组:
"directory":
[
{
"id": 37,
"job": "Electrician",
"name": "Alan"
},
{
"id": 32,
"job": "Writer",
"name": "Mark"
},
{
"id": 37,
"job": "DIY",
"name": "Alan"
},
{
"id": 134,
"job": "Director",
"name": "Philip"
},
{
"id": 37,
"job": "Plumber",
"name": "Alan"
},
{
"id": 85,
"job": "Teacher",
"name": "Oliver"
},
]
Run Code Online (Sandbox Code Playgroud)
我想要一个新的数组显示为:
Alan: Electrician, Plumber, DIY
Mark: Writer
Philip: Director,
Oliver: Teacher
Run Code Online (Sandbox Code Playgroud)
我不确定是否应该使用nested .map 还是reduce。
任何帮助表示赞赏。
我正在尝试制作一个循环组件,以便我可以在特定的时间内循环它的任何子组件。我怎样才能做到这一点?
// Looper
function Looper({ children, array }) {
return (
<div>
{array.map((item) => (
<div key={item}>{children}</div>
))}
</div>
);
}
// It works, but it needs a dummy array that I don't want.
<Looper array={[1, 2, 3, 4, 5]}>
<span>Hello Guys..</span>
</Looper>
Run Code Online (Sandbox Code Playgroud) 我在Bootstrap文件中创建了一个函数,我想用array_map函数调用它.但它告诉我这个错误:
Warning: array_map() expects parameter 1 to be a valid callback, function 'rootCreator' not found or invalid function name in ...
Run Code Online (Sandbox Code Playgroud)
这是我调用array_map的代码:
$controls = array('products','productsubcat','newssubcat');
array_map('rootCreator', $controls);
Run Code Online (Sandbox Code Playgroud)
这是我的功能代码:
public function rootCreator($cotroller)
{
$frontController = Zend_Controller_Front::getInstance();
$defaults = array('module'=>'default' ,'controller'=> $cotroller , 'action'=>'info' );
$productRoute = new Zend_Controller_Router_Route($cotroller . '/:id/:title', $defaults);
$router = $frontController->getRouter();
$router->addRoute($cotroller, $productRoute);
}
Run Code Online (Sandbox Code Playgroud) 我有这样的事情:
public static function lengtOfElements($array){
return array_map(function($item){return strlen($item);},$array);
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是直接在array_map中使用strlen($ string),但是当我尝试它时它将无法工作..为什么是原因?
像这样的东西:
public static function lengtOfElements($array){
return array_map(strlen($string),$array);
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个关联数组:
$array = array(
"key1" => "value",
"key2" => "value2");
Run Code Online (Sandbox Code Playgroud)
而且我想把键全部大写.我怎么做比一般化的方式(意思是我可以应用用户定义的函数来应用键名)?
假设我有一个像下面这样的对象阵列调用电影.
movies = [{ id : 1,title : 'Black Panther'},{ id : 2,title : 'Avengers'},{ id : 1,title : 'Justice League'},{ id : 4,title : 'Infinity War'},{ id : 5,title : 'Spider man'}]
Run Code Online (Sandbox Code Playgroud)
无论如何我可以从每个对象中提取特定键的值吗?喜欢这个标题数组.
titles = ['Black Panther','Avengers','Justice League','Infinity War','Spider Man']
Run Code Online (Sandbox Code Playgroud)
目前我正在使用map功能.有没有其他方法可以实现这一点,而无需迭代每个对象.这可以通过ES6休息/传播功能实现吗?
有些东西是错的,我怀疑它是我的PHP版本,在这台服务器上是5.2; 代码在5.6之前运行,没有任何缺陷......
我已将其调试到以下代码中.但是,我没有收到错误消息..
$standard = array_map( function( $item ) {
return $item['standard_resolution']->url;
}, $images );
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我重做这部分代码,以便在5.2中工作吗?
array-map ×13
php ×7
arrays ×4
javascript ×3
reactjs ×2
callback ×1
dictionary ×1
ecmascript-6 ×1
function ×1
jsx ×1
loops ×1
php-5.2 ×1
python ×1
python-3.x ×1
sorting ×1
split ×1