【问题标题】:Separate key and value pairs into two arrays将键和值对分成两个数组
【发布时间】:2011-08-04 14:42:02
【问题描述】:

将键和值分成两个不同的数组的最佳方法是什么 -

var data = {"A Key": 34, "Another Key": 16, "Last Key": 10};

会变成这样 -

data1 = ["A Key", "Another Key", "Last Key"];
data2 = [34, 16, 10];

谢谢。

【问题讨论】:

  • 这个怎么样? var data = {"A Key": 34, "Another Key": 16, "Last Key": 10}; var data1 = Object.keys(data); var data2 = Object.values(data);

标签: javascript arrays key


【解决方案1】:

您可以使用for in 循环遍历属性,然后根据需要将它们分配给数组。

确保检查键是否是对象的属性,而不是原型的属性。

var data1 = [];
var data2 = [];

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    data1.push(key);
    data2.push(p[key]);
  }
}

【讨论】:

    【解决方案2】:

    此函数会将data 对象拆分为键和值数组。它返回一个包含两个数组的对象。

    function splitObj(data){
      var keys = [],
          vals = [];
      for (var l in data) {
       if (data.hasOwnProperty(l){
        keys.push(l);
        vals.push(data[l]];
       }
      }
      return {keys: keys,vals:vals};
    }
    

    【讨论】:

      【解决方案3】:
      data1=[];
      data2=[]
      for (x in data) {
         data1.push(x);
         data2.push(data[x]);
      }
      

      【讨论】:

        【解决方案4】:
        var data = {"A Key": 34, "Another Key": 16, "Last Key": 10};
        
        var data1 = [],
            data2 = [];
        
        for (var property in data) {
        
           if ( ! data.hasOwnProperty(property)) {
              continue;
           }
        
           data1.push(property);
           data2.push(data[property]);
        
        }
        
        1. 设置两个不同的空白数组。
        2. 遍历对象的可枚举属性。
        3. 如果 data 没有显式地具有此属性(即不在原型链的上层),则跳过此迭代。
        4. 将键及其值推送到各自的数组中。

        jsFiddle.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-10
          • 1970-01-01
          • 2019-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-03
          • 2011-10-18
          相关资源
          最近更新 更多