将带有数字键的JavaScript对象转换为数组

将带有数字键的JavaScript对象转换为数组,javascript,jquery,arrays,json,javascript-objects,Javascript,Jquery,Arrays,Json,Javascript Objects,我有一个类似这样的对象作为JSON响应从服务器返回: { "0": "1", "1": "2", "2": "3", "3": "4" } 我想将其转换为如下JavaScript数组: ["1","2","3","4"] 有没有最好的办法?无论我在哪里阅读,人们都在使用循环的复杂逻辑。那么,有没有其他方法可以做到这一点呢? var json='{“0”:“1”、“1”:“2”、“2”:“3”、“3”:“4”}';

我有一个类似这样的对象作为JSON响应从服务器返回:

{
"0": "1",
"1": "2",
"2": "3",
"3": "4"
}
我想将其转换为如下JavaScript数组:

["1","2","3","4"]
有没有最好的办法?无论我在哪里阅读,人们都在使用循环的复杂逻辑。那么,有没有其他方法可以做到这一点呢?

var json='{“0”:“1”、“1”:“2”、“2”:“3”、“3”:“4”}';
var parsed=JSON.parse(JSON);
var-arr=[];
for(已解析的变量x){
arr.push(解析为[x]);
}

console.log(arr)
这里没有什么困难。在对象元素上循环并将它们指定给数组

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var arr = [];
for (elem in obj) {
   arr.push(obj[elem]);
}

var JsonObj={
"0": "1",
"1": "2",
"2": "3",
"3": "4"
};
var数组=[];
for(JsonObj中的变量i){
if(JsonObj.hasOwnProperty(i)和&!isNaN(+i)){
数组[+i]=JsonObj[i];
}
}
log(数组)
没有什么比得上“JSON对象”——JSON是一种序列化符号

如果要将javascript对象转换为javascript数组,可以编写自己的循环[不会那么复杂!],也可以使用
\uuu.toArray()
方法:

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var yourArray = _(obj).toArray();
你就这么做吧

var数据={
"0": "1",
"1": "2",
"2": "3",
"3": "4"
};
var-arr=[];
用于(数据中的var prop){
arr.push(数据[prop]);
}
控制台日志(arr)请尝试以下操作:

var newArr = [];
$.each(JSONObject.results.bindings, function(i, obj) {
    newArr.push([obj.value]);
});

实际上,jQuery的

没有jQuery也几乎同样容易,将键转换为数组,然后使用

假设它已经被解析为javascript对象,实际上不是JSON,这是一种字符串格式,在这种情况下,还需要运行
JSON.parse

在ES2015中,有一个非常重要的问题需要解决,这使它变得轻而易举

var arr = Object.values(obj);

假设您的值如下所示

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var arr = [];
json = JSON.stringify(eval('(' + obj + ')')); //convert to json string
arr = $.parseJSON(json); //convert to javascript array
然后,您可以使用以下命令将其转换为javascript数组

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var arr = [];
json = JSON.stringify(eval('(' + obj + ')')); //convert to json string
arr = $.parseJSON(json); //convert to javascript array
这也适用于将json转换为多维javascript数组


当使用php json编码字符串时,除了我在这里提到的方法之外,本页上的其他方法似乎都不完全适合我。

使用原始javascript,假设您有:

var j = {0: "1", 1: "2", 2: "3", 3: "4"};
您可以通过以下方式获得值:

Object.keys(j).map(function(_) { return j[_]; })
输出:

["1", "2", "3", "4"]

下面是一个示例,说明如何获取对象数组,然后对数组进行排序

  function osort(obj)
  {  // map the object to an array [key, obj[key]]
    return Object.keys(obj).map(function(key) { return [key, obj[key]] }).sort(
      function (keya, keyb)
      { // sort(from largest to smallest)
          return keyb[1] - keya[1];
      }
    );
  }

不确定我在这里遗漏了什么,但只要尝试下面的代码就可以了。我有什么遗漏吗


这是最好的解决办法。我想是的

Object.keys(obj).map(function(k){return {key: k, value: obj[k]}})
var数据=[];
数据={jdata | safe}}//通过js解析
var i=0;
对于(i=0;i
var obj={“0”:“1”、“1”:“2”、“2”:“3”、“3”:“4”};
var VAL=对象值(obj);
log(vals);//[“1”、“2”、“3”、“4”]
您可以使用PHP将json对象转换为数组和字符串。
$data='{“resultList”:[{“id”:“1839”,“displayName”:“Analytics”,“subLine”:“},{“id”:“1015”,“displayName”:“Automation”,“subLine”:“},{“id”:“1084”,“displayName”:“},{”id:“554”,“displayName”:“Apparel”,“subLine”:“},{”id:“displayName”:“Aerospace”,“subLine”:“},{”id:“1990”,“displayName”:“账户对账”,“subLine”:“},{id:“3657”,“显示名”:“Android”,“子行”:“},{id:“1262”,“显示名”:“Apache”,“子行”:“},{id:“1440”,“显示名”:“代理”,“子行”:“},{”id:“710”,“显示名”:“飞机”,“子行”:“},{”id:“12187”,“显示名”:“AAC”,“子行”:“},{”id:“20365”,“显示名”:“AAT”,“子行”:“},{”id:“7849”,“显示名”:“AAP”,“子行”:”},{“id”:“20511”,“displayName”:“AACR2”,“子行”:“},{“id”:“28585”,“displayName”:“AASHTO”,“子行”:“},{“id”:“45191”,“displayName”:“AAMS”,“子行”:“}]}”;
$b=json_解码($data);
$i=0;
而($b->{'resultList'}[$i])
{
打印($b->{'resultList'}[$i]->{'displayName'});
回声“
”; $i++; }
您可以将空数组文本
[]
用作
目标

const输入={
"0": "1",
"1": "2",
"2": "3",
"3": "4"
}
常量输出=对象。分配([],输入)

console.log(output)
duplicate:一个简单的循环并不是复杂的逻辑,顺便说一下:)@adeneo先生,你能解释一下htis方法吗。@adeneo又名burns先生。。。感谢您的快速解决方案。@NikhilAgrawal这里的诀窍是使用Object.keys(),它将对象的键(=其自身的可枚举属性)作为数组返回。然后我们可以使用array.map将每个键替换为新数组中的对应值。这是一个答案,但不是一个非常友好的答案。这个问题并不明确,但我假设对象的键是数组的索引,其性质是(0,1,2,3)。只是指出人们应该知道这种方法不能保证数组中的任何顺序;如果键是索引,那么您需要显式地对它们进行排序,以便以正确的顺序构建数组。谢谢-效果很好。但是,如何使内部对象(对象中的对象)也这样做呢?内部对象也应该在根级别成为数组的平面成员(这样它们就可以被传递到,比如说,datatables.net等)1:“没有什么比得上“JSON对象”-JSON是一种序列化符号。-我真不敢相信在完全理解它之前我听了多少次。谢谢。我真的需要这个。有人在大量代码中使用对象作为数组,这在我需要在其上构建之前是很好的…非常接近我所需要的,谢谢:对于(var x in data){arr[x]=data[x];}您的解决方案将是这里介绍的所有解决方案中最慢的一个。。。对业务代码有害;)感谢您提供这段代码片段,它可能会提供一些有限的、即时的帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在你的回答中添加一些解释,包括你的假设
Object.keys(obj).map(function(k){return {key: k, value: obj[k]}})
      var data = [];

      data  = {{ jdata|safe }}; //parse through js
      var i = 0 ;
      for (i=0;i<data.length;i++){
         data[i] = data[i].value;
      }
$data='{"resultList":[{"id":"1839","displayName":"Analytics","subLine":""},{"id":"1015","displayName":"Automation","subLine":""},{"id":"1084","displayName":"Aviation","subLine":""},{"id":"554","displayName":"Apparel","subLine":""},{"id":"875","displayName":"Aerospace","subLine":""},{"id":"1990","displayName":"Account Reconciliation","subLine":""},{"id":"3657","displayName":"Android","subLine":""},{"id":"1262","displayName":"Apache","subLine":""},{"id":"1440","displayName":"Acting","subLine":""},{"id":"710","displayName":"Aircraft","subLine":""},{"id":"12187","displayName":"AAC","subLine":""}, {"id":"20365","displayName":"AAT","subLine":""}, {"id":"7849","displayName":"AAP","subLine":""}, {"id":"20511","displayName":"AACR2","subLine":""}, {"id":"28585","displayName":"AASHTO","subLine":""}, {"id":"45191","displayName":"AAMS","subLine":""}]}';

$b=json_decode($data);

$i=0;
while($b->{'resultList'}[$i])
{
    print_r($b->{'resultList'}[$i]->{'displayName'});
    echo "<br />";
    $i++;
}