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

Try this:

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

Again, like I said in the comments, it would better if you change your data structure to an array of objects with named keys then you can do this much more readable:

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 に答える