2016-06-17 69 views
0

我有数组从数据库json_encode,像这样:转换阵列的JavaScript

"[{"uid":"595e7d","name":"Elephant"},{"uid":"701b03","name":"Bird"},{"uid":"29a8c","name":"Lion"}]" 

但如何让数组只显示记录不与场/列名,当我在javascript显示像这样:

JavaScript数组:

{ 
    "595e7d": "Elephant", 
    "701b03": "Bird", 
    "29a8c": "Lion" 
} 

是否应在PHP或JavaScript来实现?

三江源

+1

您发布所需的输出不是一个JavaScript数组,其对象 –

+0

@HectorBarbossa,哦三江源为解释。 –

回答

1

手柄使用javascript:

function transfrom (arrs){ 
    return arrs.reduce((init, arr) => { 
     init[arr.uid] = arr.name 
     return init 
    } 
, {}) 
} 

//usage 

let arrs = [{"uid":"595e7d","name":"Elephant"},{"uid":"701b03","name":"Bird"},{"uid":"29a8c","name":"Lion"}] 
transfrom(arrs) 

// {595e7d: "Elephant", 701b03: "Bird", 29a8c: "Lion"} 

或者你可以用PHP处理:

<?php 
$arr = array (
    array('uid' =>"595e7d", "name"=>"Elephant"), 
    array("uid" =>"701b03", "name" =>"Bird"), 
    array("uid" =>"29a8c", "name" =>"Lion") 
); 

function transform($v1, $v2) { 
    $v1[$v2["uid"]] = $v2["name"]; 
    return $v1;  
} 

echo json_encode(array_reduce($arr, "transform", array())); 
// { 
//  "595e7d": "Elephant", 
//  "701b03": "Bird", 
//  "29a8c": "Lion" 
// } 
?> 
0

如果我理解正确的话,你正在寻找的东西像

var arr = [{"uid":"595e7d","name":"Elephant"},{"uid":"701b03","name":"Bird"},{"uid":"29a8c","name":"Lion"}]; 
var out = {}; 
arr.forEach(function(obj){ 
    var tempArr = Object.values(obj); 
    out[tempArr[0]] = tempArr[1]; 
}); 

console.log(out); 

请注意,该代码是不是太普通,并根据您的实际需求可能需要修改。