繁体   English   中英

将Javascript对象数组转换为单个简单数组

[英]Convert Array of Javascript Objects to single simple array

我还无法弄清楚如何正确地做到这一点。

我有一个对象的JS数组,看起来像这样:

[{"num":"09599","name":"KCC","id":null},{"num":"000027","name":"Johns","id":null}]

我想将其转换为简单的单个JS数组,而无需任何键,它应如下所示:

[
  "09599",
  "KCC",
  "000027",
  "Johns" ]

这些ID可以完全删除。 任何帮助将非常感激。

只需迭代原始数组,选择有趣的键,然后将它们累积在另一个数组中,就像这样

var keys = ['num', 'name'],
    result = [];

for (var i = 0; i < data.length; i += 1) {
  // Get the current object to be processed
  var currentObject = data[i];
  for (var j = 0; j < keys.length; j += 1) {
    // Get the current key to be picked from the object
    var currentKey = keys[j];
    // Get the value corresponding to the key from the object and
    // push it to the array
    result.push(currentObject[currentKey]);
  }
}
console.log(result);
// [ '09599', 'KCC', '000027', 'Johns' ]

在这里, data是问题中的原始数组。 keys是您要从对象中提取的一组键。


如果您只想使用函数式编程技术来执行此操作,则可以使用Array.prototype.reduceArray.prototype.concatArray.prototype.map这样的方法

var keys = ['num', 'name'];

console.log(data.reduce(function (result, currentObject) {
  return result.concat(keys.map(function (currentKey) {
    return currentObject[currentKey];
  }));
}, []));
// [ '09599', 'KCC', '000027', 'Johns' ]

您可以使用Object.keys().forEach()方法来迭代对象数组,并使用.map()来构建过滤后的数组。

  var array = [{"num":"09599","name":"KCC","id":null},{"num":"000027","name":"Johns","id":null}];

  var filtered = array.map(function(elm){
    var tmp = [];
    //Loop over keys of object elm
    Object.keys(elm).forEach(function(value){
      //If key not equal to id
      value !== 'id'
      //Push element to temporary array
      ? tmp.push(elm[value])
      //otherwise, do nothing
      : false
    });
    //return our array
    return tmp;

  });

  //Flat our filtered array
  filtered = [].concat.apply([], filtered);

  console.log(filtered);
  //["09599", "KCC", "000027", "Johns"]

如何使用map

var data =  [
              {"num":"09599","name":"KCC","id":null} 
              {"num":"000027","name":"Johns","id":null}
            ];

var result = data.map(function(obj) {
   return [
       obj.num,
       obj.name,
       obj.id
    ];
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM