从数组中的数组中获取和删除数据

时间:2016-02-19 19:12:05

标签: javascript arrays

我遇到了一些操纵数据的问题,因为我不太了解JavaScript。我有以下数组:

max

我需要的是选择所有第一个元素,然后选择所有第二个元素等。我已经尝试了

var Dict = [["x", "y", "z"], ["x", "w", "m"], ["u", "t", "d", "L"]];

但这似乎不起作用。然后我还需要删除所有" x"来自顶级阵列,由于第一个问题,我还没有尝试过。

6 个答案:

答案 0 :(得分:1)

var item, First=[], Second=[], Third=[], Dict = [["x", "y", "z"],["x", "w", "m"], ["u", "t", "d", "L"]];
for(var m in Dict) {
    // m does not refer to item in Dict, but index of item in Dict
    First.push(Dict[m][0]);
    Second.push(Dict[m][1]);
    Third.push(Dict[m][2]);
}
console.log(First, Second, Third);
// ["x", "x", "u"] ["y", "w", "t"] ["z", "m", "d"]

答案 1 :(得分:1)

如果您有权访问es6,则可以执行以下操作:

const Dict = [["x", "y", "z"],["x", "w", "m"], ["u", "t", "d", "L"]];
const [First, Second, Third] = Dict.map((_, i) => Dict.map(entry => return entry[i]));

es5版本将是:

var Dict = [["x", "y", "z"],["x", "w", "m"], ["u", "t", "d", "L"]];
var Items = Dict.map(function(_, i) {
  return Dict.map(function(entry) {
    return entry[i];
  });
});

var First  = Items.shift(), 
    Second = Items.shift(), 
    Third  = Items.shift();

答案 2 :(得分:0)

不要对数组使用for-in。获取所有第一个元素:

ES5

var firstElements = Dict.map(function(el) { return el[0]; }); 

ES6

var firstElements = Dict.map(el => el[0]); 

(收益率["x", "x", "u"]

答案 3 :(得分:0)

尝试使用以下javascript,这应该可行:

var Dict = [
  ["x", "y", "z"],
  ["x", "w", "m"],
  ["u", "t", "d", "L"]
];
First = [];
Second = [];
Third = [];

for (m=0;m<Dict.length;m++) {
  First.push(Dict[m][0]);
  Second.push(Dict[m][1]);
  Third.push(Dict[m][2]);
}
console.log(First);
console.log(Second);
console.log(Third);

提供以下三个数组:

["x", "x", "u"]
["y", "w", "t"]
["z", "m", "d"]

答案 4 :(得分:0)

试试这个:

var Dict = [["x", "y", "z"],["x", "w", "m"], ["u", "t", "d", "L"]];
var first = Dict.slice(0,1);
var second = Dict.slice(1,2);
var third = Dict.slice(-1);

要查看产生的内容,请点击此处:

JSFiddle

更好的选择

如果您想使用一组可变索引,可以使用splice代替slice

var Dict = [["x", "y", "z"],["x", "w", "m"], ["u", "t", "d", "L"]];
var result = [];
for(var i = 0; i < Dict.length; i++){
   result.push(Dict.splice(i));
}

你可以在这里看到:

JSFiddle Splice

答案 5 :(得分:0)

检查这段代码

var Dict = [["x", "y", "z"],["x", "w", "m"], ["u", "t", "d", "L"]];
for(var i=0; i < Dict.length;i++){
  allArr[i] = Dict.map(function(subArr){
    return subArr[i]
  });
  
  //To Remove all the "x" from the array
  if(i == 0){
    allArr[i] = allArr[i].filter(val => val != "x")
  }
}