如何在javascript中“清理”一个数组?

时间:2011-08-26 21:50:30

标签: javascript arrays

我被困在这里。我该如何清理这个数组:

{"data":[{"id":"5201521d42"},{"id":"52049e2591"},{"id":"52951699w4"}]}

看起来像:

["5201521d42","52049e2591","52951699w4"]

我正在使用Javascript。

10 个答案:

答案 0 :(得分:4)

你只需要迭代现有的数据数组并提取每个id值并将其放入一个新的“干净”数组中,如下所示:

var raw = {"data":[{"":"5201521d42"},{"id":"52049e2591"},{"id":"52951699w4"}]};
var clean = [];
for (var i = 0, len = raw.data.length; i < len; i++) {
    clean.push(raw.data[i].id);
}

答案 1 :(得分:1)

如果您可以使用ES5并且性能并不重要,我建议您这样做:

编辑: 看看这个jsperf testcase,map vs manual比慢了大约7-10倍,考虑到这已经是每秒数百万次操作的范围,实际上并没有那么多。因此,在避免过早优化的范例下,这是更清洁和前进的方式。

var dump = {"data":[{"id":"5201521d42"},{"id":"52049e2591"},{"id":"52951699w4"}]};
var ids = dump.data.map(function (v) { return v.id; });

否则:

var data = dump.data;
var ids = [];
for (var i = 0; i < data.length; i++) {
  ids.push(data[i].id);
}

答案 2 :(得分:1)

覆盖同一个对象

var o = {"data":[{"id":"5201521d42"},{"id":"52049e2591"},{"id":"52951699w4"}]};

for (var i = o.data.length; i--; ){
   o.data[i] = o.data[i].id;
}

您正在做的是将现有对象替换为其id属性的值。

答案 3 :(得分:0)

做类似的事情:

var cleanedArray = [];
for(var i=0; i<data.length; i++) {
  cleanedArray.push(data[i].id);
}
data = cleanedArray;

答案 4 :(得分:0)

看看这个fiddle。我认为这就是你要找的东西

oldObj={"data":[{"":"5201521d42"},{"id":"52049e2591"},{"id":"52951699w4"}]};
oldObj = oldObj.data;
myArray = [];

for (var key in oldObj) {

   var obj = oldObj[key];
   for (var prop in obj) {
      myArray.push(obj[prop]);
   }
}
console.log(myArray)

答案 5 :(得分:0)

使用Array.prototype.map this documentation page中定义了后备代码,如果用户的浏览器缺少该功能,则会定义该功能。

答案 6 :(得分:0)

var data = {"data":[{"":"5201521d42"},{"id":"52049e2591"},{"id":"52951699w4"}]}; 
var clean_array = []; 
for( var i in data.data )
{ 
    for( var j in data.data[i] ) 
    { 
        clean_array.push( data.data[i][j] ) 
    } 
} 
console.log( clean_array );

答案 7 :(得分:0)

您实际上是缩小维度。或者你可能会说你从qube中提取了一个维度。你甚至可以说selecting a column from an array of objects。但是术语 clean 与您的问题不符。

var list = [];
var raw = {"data":[{"id":"5201521d42"},{"id":"52049e2591"},{"id":"52951699w4"}]};
for(var i=0; i < raw.data.length ; ++i){
  list.push(raw.data[i].id);
}

答案 8 :(得分:0)

使用map上的Array功能:

data.map(function(item) { return item.id; });

这将返回:

["5201521d42", "52049e2591", "52951699w4"]

什么是map?这是一种使用提供的函数的结果创建新数组的方法。阅读所有相关内容:map - MDN Docs

答案 9 :(得分:0)

在javascript中清理任何ARRAY的最简单方法 它使用循环遍历数据或手动,如下所示:

  let data = {"data":[{"id":"5201521d42"},{"id":"52049e2591"}, 
    {"id":"52951699w4"}]};
  let n = [data.data[0].id,data.data[1].id, data.data[2].id];
console.log(n)

输出:

(3) ["5201521d42", "52049e2591", "52951699w4"]