【问题标题】:How to update Array using $.each in jQuery如何在 jQuery 中使用 $.each 更新数组
【发布时间】:2016-10-21 16:29:58
【问题描述】:

我有一个使用下面给出的JSON.parse() 解析的数组。

var b = [{"pk":"1","name":"Ali","marked":"N" },
{"pk":"2","name":"Zeeshan","marked":"N" },
{"pk":"3","name":"Tariq","marked":"N" }]

这个列表包含大约 4000 条记录,现在我想更新 marked = "Y",其中 pk 在 [2,3] 中。 pk 列表长度可能是 100。我的问题是,我们如何迭代 b 并设置 marked="Y" 其中 pk 在列出的值中?

【问题讨论】:

  • 那不是 JSON。 JSON 是一种用于数据交换的文本符号。如果您正在处理 JavaScript 源代码,而不是处理 string,那么您就不是在处理 JSON。
  • 我已经展示了解析后的数组。
  • 是的,但关键是当您标记这些条目时,您不是在处理 JSON,因此 JSON 与问题无关。

标签: jquery arrays each


【解决方案1】:

试试

var b = [
  {"pk":"1","name":"Ali","marked":"N" },
  {"pk":"2","name":"Zeeshan","marked":"N" },
  {"pk":"3","name":"Tariq","marked":"N" }
];
var condition = ["2", "3"];

$.each(b,function(index,value){
  if(condition.indexOf(value.pk) > -1){
     value.marked = "Y";
  }
});

console.log(b);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

  • 赞成,接受其他答案,因为它更具解释性。
【解决方案2】:

在现代世界中不需要$.each,数组有forEach 之类的(如果你真的需要支持像IE8 这样过时的浏览器,你可以填充它们)。

如果 pk 可以有 100 个条目并且您要过滤 4,000 条记录,我会构建一个 pk 值的映射并使用它。这是一个 ES5 方法:

var b = [
  {"pk":"1","name":"Ali","marked":"N" },
  {"pk":"2","name":"Zeeshan","marked":"N" },
  {"pk":"3","name":"Tariq","marked":"N" }
];
var pk = ["2", "3"];

// Build the "map"
var map = Object.create(null);
pk.forEach(function(value) {
  map[value] = true;
});

// Mark relevant entries
b.forEach(function(entry) {
  if (map[entry.pk]) {
    entry.marked = "Y";
  }
});
console.log(b);

这避免了不断调用pk.indexOf(entry.pk) 来查看是否应标记条目,这需要每次重新扫描数组。相反,它利用 JavaScript 引擎的对象属性查找代码,该代码在现代浏览器上高度进行了优化(即使未优化,也可能是某种哈希映射或类似的东西,但如今它们已进行了优化)。 p>

如果您确实想改用$.each,只需更改

pk.forEach(function(value) {

$.each(pk, function(_, value) {
// Note ------------^

之后的b 循环也是如此。 $.each 以条目的 index 作为第一个参数调用回调,then 是值。

【讨论】:

  • 很抱歉提到 $.each 是 jQuery 的新手。
  • @sharafjaffri:不用道歉! :-)
猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2014-01-31
  • 2012-01-20
  • 2013-10-09
  • 2018-07-07
相关资源
最近更新 更多