Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中将对象{}转换为键值对数组[]_Javascript_Arrays_Type Conversion - Fatal编程技术网

如何在JavaScript中将对象{}转换为键值对数组[]

如何在JavaScript中将对象{}转换为键值对数组[],javascript,arrays,type-conversion,Javascript,Arrays,Type Conversion,我要转换如下所示的对象: {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0} [[1,5],[2,7],[3,0],[4,0]...]. 进入一个键值对数组,如下所示: {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0} [[1,5],[2,7],[3,0],[4,0]...]. 如何在

我要转换如下所示的对象:

{"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}
[[1,5],[2,7],[3,0],[4,0]...].
进入一个键值对数组,如下所示:

{"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}
[[1,5],[2,7],[3,0],[4,0]...].
如何在JavaScript中将对象转换为键值对数组?

您可以使用和来执行此操作

var obj={1:5,2:7,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0}
var result=Object.keys(obj.map)(key)=>[Number(key),obj[key]];
控制台日志(结果)使用方法

var obj={
"1": 5,
"2": 7,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0
};
//获取所有对象属性名
var res=Object.keys(obj)
//迭代它们并生成数组
.map(函数(k){
//生成数组元素
返回[+k,对象[k]];
});
控制台日志(res)在Ecmascript 6中

var obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};

var res = Object.entries(obj);

console.log(res);
var obj={
"1": 5,
"2": 7,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0
};
var res=对象条目(obj);
控制台日志(res)最好的方法是:

var obj ={"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10"‌​:0,"11":0,"12":0} 
Object.entries(obj);
调用
条目
,如图所示,将根据询问者的请求返回
[键,值]

或者,您可以调用
Object.values(obj)
,它将只返回值

Object.entries()
返回一个数组,该数组的元素是与直接在
对象上找到的可枚举属性
[key,value]
对相对应的数组。属性的顺序与手动循环对象的属性值所给出的顺序相同

-

Object.entries
函数返回的输出几乎与您要求的输出完全相同,只是键是字符串而不是数字

const obj={“1:5”,2:7,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0};

console.log(Object.entries(obj))
如果
Object.entries
对您不起作用,那么还有另一种解决方案

const obj={
'1': 29,
'2': 42
};
const arr=Array.from(Object.keys(obj),k=>[`${k}`,obj[k]]);

控制台日志(arr)在中使用

var obj = { "10":5, "2":7, "3":0, "4":0, "5":0, "6":0, "7":0,
            "8":0, "9":0, "10":0, "11":0, "12":0 };

var objectToArray = function(obj) {
    var _arr = [];

    for (var key in obj) {
        _arr.push([key, obj[key]]);
    }
    return _arr;
}

console.log(objectToArray(obj));

递归将对象转换为数组

function is_object(mixed_var) {
    if (mixed_var instanceof Array) {
        return false;
    } else {
        return (mixed_var !== null) && (typeof( mixed_var ) == 'object');
    }
}


function objectToArray(obj) {
    var array = [], tempObject;
    for (var key in obj) {

        tempObject = obj[key];

        if (is_object(obj[key])) {
            tempObject = objectToArray(obj[key]);
        }
        array[key] = tempObject;
    }
    return array;
}

如果您使用的是lodash,则可以简单如下:

var arr = _.values(obj);

使用lodash,除了上面提供的答案之外,您还可以在输出数组中拥有密钥

在输出数组中没有对象键 用于:

如果obj如下所示:

{ “art”: { id: 1,  title: “aaaa” }, “fiction”: { id: 22,  title: “7777”} }
那么阵列将是:

[ { id: 1, title: “aaaa” }, { id: 22, title: “7777” } ]
使用输出数组中的对象键 如果您改为编写(“流派”是您选择的字符串):

您将获得:

[ 
  { id: 1, title: “aaaa” , genre: “art”}, 
  { id: 22, title: “7777”, genre: “fiction” }
]
用于以
key&value
格式获取对象的每个元素,然后按如下方式通过它们:

var obj={1:5,2:7,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0}
var res=Object.entries(obj.map)([k,v])=>([Number(k,v]));
控制台日志(res)您可以使用

例如:

_.castArray({a':1});
//=>[{'a':1}]

现在回顾一下2018年的一些答案,其中ES6是标准

从对象开始:

let const={1:9,2:8,3:7,4:6,5,6:4,7:3,8:2,9:1,10:0,12:5};
  • 只是盲目地获取数组中的值,而不关心键:
const obj={“1:9”,2:8,3:7,4:6,5:5,6:4,7:3,8:2,9:1,10:0,12:5};
console.log(Object.values(obj));

//[9,8,7,6,5,4,3,2,1,0,5]
我们可以将键的数字更改为字符串类型,如下所示:

var obj={1:5,2:7,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0}
var result=Object.keys(obj).map(函数(键){
返回[String(key),obj[key]];
});
控制台日志(结果)
这是我的解决方案,我有同样的问题,似乎这个解决方案对我有效


我建议使用
Object.entries()

var obj={1:5,2:7,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0}
var结果=对象。条目(obj)

控制台日志(结果)这是我简单的裸体实现:

let obj = {
  "1": 5,
  "2": 7,
  "3": 0,
  "4": 0,
  "5": 0,
  "6": 0,
  "7": 0,
  "8": 0,
  "9": 0,
  "10": 0,
  "11": 0,
  "12": 0
};    

const objectToArray = obj => {
      let sol = [];
      for (key in obj) {
        sol.push([key, obj[key]]);
      }
      return sol;
    };

objectToArray(obj)

您可以使用
Object.values([])
,如果您还没有:

const objectToValuesPolyfill = (object) => {
  return Object.keys(object).map(key => object[key]);
};
Object.values = Object.values || objectToValuesPolyfill;

然后你可以做:

var object = {1: 'hello', 2: 'world'};
var array = Object.values(object);
请记住,js中的数组只能使用数字键,因此如果您在对象中使用了其他内容,那么这些将成为'0,1,2…x'``

删除重复项可能很有用,例如,如果您有唯一的密钥

var obj = {};
object[uniqueKey] = '...';

我喜欢功能性方法。作为一个较短的选择:
Object.entries(obj.map)(e=>[+e[0],e[1]])这对我有用。我遇到了一个问题,导入JSON会添加索引,这使得无法使用Angulars ngFor循环。这在保留结构的同时删除了索引。@RAC+1用于使用“索引”而不是“索引”。滚开,古老的英国传统!我不知道为什么会被否决,效果很好。我没有否决,但请注意,
.map((value)=>(value))
部分没有意义——它只返回一个条目数组,与从
对象.entries(obj)
调用中获得的条目数组完全相同。第四个要点及其后与问题完全无关,剩下的答案只是总结了这里的前三个答案。这个答案不会给讨论带来任何不在这里的内容,也不会完全不相关。是的,作为第一行的状态,这是答案的总结,然后将其更新为使用现代ES6技术,而不是全吹功能。当您从支持关联数组的语言(例如PHP)中移动JSON数组时,第四个答案很有用。这里提供的所有方法都已在前三个答案中的两个中以简单形式提供,它们不在函数中,所以我不知道您需要什么
var obj = {};
object[uniqueKey] = '...';
var obj = { "1": 5, "2": 7, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0, "10": 0, "11": 0, "12": 0 }
let objectKeys = Object.keys(obj);

let answer = objectKeys.map(value => {
    return [value + ':' + obj[value]]
});