Привет, я новичок в 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"});

Пожалуйста, объясни. Заранее спасибо...

-1
Babu R 26 Янв 2013 в 10:53

2 ответа

Лучший ответ
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/

1
salexch 26 Янв 2013 в 07:14

Вы можете попробовать что-то вроде. Этот код будет работать, даже если у вас нет имен ключей. Он находит ключевые имена на основе значения. Также добавил его в 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;
} 
0
Atur 26 Янв 2013 в 08:03