像对象一样的数组转换为数组

时间:2017-09-19 19:33:15

标签: javascript arrays

我正在尝试用JavaScript来完成我用jQuery做的事情,以便对API响应进行错误处理。

我在jQuery中编写了这段代码,它完成了我想要的(不同的项目):

var response = e.responseJSON;
$.each(response.errors, function(index, value){
  var div = $("#error_" + index);
  div.html(value[0]).addClass('error');
});

然后我尝试将代码转换为JavaScript而不是jQuery,但我似乎遇到了像数组转换到数组这样的对象的问题。对于e.forEach循环。

我目前的代码是:

.catch(function(response){
  let e = Object.values(response.response.data)
  let data = Array.from(e[1])
  console.log(e)
  console.log(data)
});

当我记录data时,它返回一个空数组。记录e时返回像数组一样的对象。

enter image description here

我想我正在寻找的是,我做错了什么,是否有更好的方式来实现我想要实现的目标?

2 个答案:

答案 0 :(得分:1)

e[1]是一个非类数组的对象,所以Array.from(e[1])并没有多大意义。我想你想要的是:

let e = Object.values(response.response.data);
for (var index in e[1]) {
    var div = document.getElementById('error_' + index);
    div.innerHTML = e[1][index][0];
    div.classList.add("error");
}

答案 1 :(得分:0)

答案



var response = {"error1": "my error", "error2": "another error"}

example(response)

function example(response) {
  Object.keys(response).map(function(key) {
    console.log(key)
    console.log(response[key])
  })
}