我知道以前也有人问过类似的问题,但这个问题有点不同。我有一个未命名对象的数组,其中包含一个命名对象的数组,我需要得到其中“name”为“string 1”的对象。下面是一个示例数组。

var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

更新:我应该早点说,但一旦我找到它,我想用一个编辑过的对象替换它。


当前回答

下面是搜索和替换的解决方案

function searchAndUpdate(name,replace){
    var obj = array.filter(function ( obj ) {
        return obj.name === name;
    })[0];
    obj.name = replace;
}

searchAndUpdate("string 2","New String 2");

其他回答

你可以循环数组并测试该属性: 函数搜索(nameKey, myArray){ For(令i=0;i < myArray.length;我+ +){ if (myArray[i].name === nameKey) { 返回myArray[我]; } } } Const数组= [ {name:"string 1", value:"this", other: "that"}, {name:"string 2", value:"this", other: "that"} ]; const resultObject = search("string 1",数组); console.log (resultObject)

根据ECMAScript 6,您可以使用findIndex函数。

array[array.findIndex(x => x.name == 'string 1')]

使用简单的for循环:

var result = null;
for (var i = 0; i < array.length; i++) { 
  if (array[i].name === "string 1") { 
    result = array[i];
    break;
  } 
}

如果可以,也就是说,如果您的浏览器支持,请使用Array。过滤器,它更简洁:

var result = array.filter(function (obj) {
  return obj.name === "string 1";
})[0];

你可以用一个简单的循环来实现:

var obj = null;    
for (var i = 0; i < array.length; i++) {
    if (array[i].name == "string 1") {
        obj = array[i];
        break;
    }
}

考虑到您有以下片段:

var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

您可以使用以下函数来搜索项目

const search = what => array.find(element => element.name === what);

您可以检查是否找到了该项目。

const found = search("string1");
if (found) {
    console.log(found.value, found.other);
} else {
    console.log('No result found');
}