首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从0开始重新索引对象

如何从0开始重新索引对象
EN

Stack Overflow用户
提问于 2015-01-01 16:16:26
回答 4查看 647关注 0票数 0

下面有一个对象输出,如何在js中设置从0开始的索引?

代码语言:javascript
复制
Object
  3: Object
     id: 34
     type: 0


var obj = {};
var edited = false;
for (var i = 0; i < $(".list").length; i++) {
  var data_id = parseInt($(".list").eq(i).attr('data-id'));
  var data_type = parseInt($(".list").eq(i).attr('data-type'));
  if ((data_type != 0)) {
    edited = true;
  } else {
    edited = false;
  }

  if (edited == true) {
    obj[i] = {};
    obj[i]['id'] = data_id;
    obj[i]['type'] = data_type;
  }
}

console.log(obj);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-01 16:25:36

实际上,如果您想从0开始,使用另一个变量,而不是"i“(当您使用它作为索引时,我认为它是3)。

代码语言:javascript
复制
var obj = {};
var edited = false;
var obj_idx = 0;
for (var i = 0; i < $(".list").length; i++) {
  var data_id = parseInt($(".list").eq(i).attr('data-id'));
  var data_type = parseInt($(".list").eq(i).attr('data-type'));
  if ((data_type != 0)) {
    edited = true;
  } else {
    edited = false;
  }

  if (edited == true) {
    obj[obj_idx] = {};
    obj[obj_idx]['id'] = data_id;
    obj[obj_idx]['type'] = data_type;
    obj_idx += 1;
  }
}

console.log(obj);

我想这次的讣告会是这样的:

代码语言:javascript
复制
Object
  0: Object
     id: 34
     type: 0
票数 1
EN

Stack Overflow用户

发布于 2015-01-01 16:25:39

需要更多的jQuery吗?

代码语言:javascript
复制
var arr = $(".list").filter(function() {
              return $(this).data('type') != 0;
          }).map(function() {
              return { id : $(this).data('id'), type : $(this).data('type') };
          }).get();

FIDDLE

票数 2
EN

Stack Overflow用户

发布于 2015-01-01 16:28:09

您可以通过Array.prototype.push.call将对象伪装为数组,这样还可以获得副作用:obj.length。这有点像忍者和优雅:]

代码语言:javascript
复制
var obj = {};
var edited = false;
for (var i = 0; i < $(".list").length; i++) {
  var data_id = parseInt($(".list").eq(i).attr('data-id'));
  var data_type = parseInt($(".list").eq(i).attr('data-type'));
  if ((data_type != 0)) {
    edited = true;
  } else {
    edited = false;
  }

  if (edited == true) {
    Array.prototype.push.call(obj, {id: data_id, type: data_type});
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27732433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档