-1

こんにちは私はjavascriptが初めてです。その値を使用して配列のインデックスを取得し、その配列に新しい要素を追加したいと考えています。これが私の配列です:

var testArray=[];

testArray.push({"key1":"value1","key2":"value2"});
testArray.push({"key1":"value11","key2":"value22"});

ここで、「value11」のインデックスを取得し、以下のように同じインデックスに新しい要素を「key3」:「value33」として追加します。

testArray.push({"key1":"value11","key2":"value22","key3":"value33"});

説明してください。前もって感謝します...

4

3 に答える 3

1
var testArray=[];

testArray.push({"key1":"value1","key2":"value2"});
testArray.push({"key1":"value11","key2":"value22"});

var filtered = testArray.filter(function(item) {
    if (item.key1 == 'value11') {
        item.key3 = 'value33';
        return true
    }
    return false;
});

http://jsfiddle.net/XUzJw/

于 2013-01-26T07:07:41.373 に答える
1

簡単な答えは次のとおりです。

var testArray = [];

testArray.push();
testArray.push();

// loop through every element of the array
for(var i = testArray, l = testArray.length; i < l; i++){
  // grab this particular object
  var obj = testArray[i];

  // see if key1 is equivalent to our value
  if(obj.key1 == 'value11'){
    // if so, set key3 to the value we want for this object
    obj.key3 = 'value33';
    break;    
  }
}

より良い答えは次のようになります。

var testArray = [
  {
    "key1" : "value1",
    "key2" : "value2"
  },
  {
    "key1" : "value11",
    "key2" : "value22"
  }
];

function findAndSwap(list, comparator, perform){
  var l = list.length;
  while(l--) if(comparator(list[l], l, list)) perform(list[l], l, list);
}

function checkProp(prop, value){ return function(obj){ return obj[prop] === value } }
function addProp  (prop, value){ return function(obj){ obj[prop] = value          } }

findAndSwap(testArray, checkProp('key1', 'value11'), addProp('key3', 'value33'));
于 2013-01-26T07:24:26.610 に答える
0

のようなものを試すことができます。このコードは、キー名がなくても機能します。値の基本でキー名を見つけます。jsFiddle http://jsfiddle.net/rTazZ/2/にも追加しました

var a = new Array(); 
a.push({"1": "apple", "2": "banana"}); 
a.push({"3": "coconut", "4": "mango"});

GetIndexByValue(a, "coconut");

function GetIndexByValue(arrayName, value) {  
var keyName = "";
var index = -1;
for (var i = 0; i < arrayName.length; i++) { 
   var obj = arrayName[i]; 
        for (var key in obj) {          
            if (obj[key] == value) { 
                keyName = key; 
                index = i;
            } 
        } 
    }
    //console.log(index); 
    return index;
} 
于 2013-01-26T07:45:19.843 に答える