0

我有一个名为collection. 该数组包含大量长度为 12 的数组。后一个数组的每个项目都具有源 ID [0] 和目标 ID [1](源和目标对是唯一的,但相同的源ID 可以分配给不同的目标 ID)。

给定源 ID 和目标 ID 后,我需要在数组中找到具有给定 ID 的项目并操作其值。

如果这有助于找到解决方案,则存在 jQuery。

提前致谢!

var collection = [
[
    136898,
    162582,
    "8X1ABG\1",
    "lorem ipsum",
    true,
    "FULL",
    true,
    "FULL",
    "8X1ABG\0",
    "dolor sit",
    false,
    "SIMILAR"
],
[
    136898,
    163462,
    "8X1ABG\1",
    "lorem ipsum",
    true,
    "FULL",
    true,
    "FULL",
    "8X1ABG\0",
    "dolor sit",
    false,
    "SIMILAR"
],  
[
    136578,
    161873,
    "8X1A1G\2",
    "lorem ipsum",
    true,
    "FULL",
    true,
    "FULL",
    "8X1A1G\0",
    "dolor sit",
    false,
    "SIMILAR"
],
[
    136432,
    162280,
    "8X1ABC\1",
    "lorem ipsum",
    true,
    "FULL",
    true,
    "FULL",
    "8X1ABC\0",
    "dolor sit",
    false,
    "SIMILAR"
]]



// TODO: find the unique item in collection array with the following source
// and target ID
var sourceId = 136898;
var targetId = 163462;

// TODO: update some values of the identified item inside collection
4

2 回答 2

3

尝试这个:

var item = collection.filter(function(collect) {
  return collect[0] == sourceId && collect[1] == targetId;
});

同样,就像我在评论中所说的那样,如果您将数据结构更改为具有命名键的对象数组,那么您可以这样做更具可读性:

return collect.sourceId == sourceId && collect.targetId == targetId;
于 2013-06-14T07:56:15.507 回答
1

如果您需要与旧版浏览器兼容,因为.filter()只有IE9 支持,您还可以循环遍历数组的元素(或编写过滤器的实现,由 MDN 提供)。

var item = [];
for (var i = 0; i < collection.length; i++) {
    var coll = collection[i];
    if (coll[0] == sourceId && coll[1] == targetId) item.push(coll);
}
于 2013-06-14T08:22:55.223 回答