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

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

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


当前回答

用foreach:

let itemYouWant = null;
array.forEach((item) => {
    if (item.name === 'string 1') {
        itemYouWant = item;
    }
});
console.log(itemYouWant);

如果有地图就更好了:

const itemYouWant = array.map((item) => {
    if (item.name === 'string 1') {
        return item;
    }
    return null;
});
console.log(itemYouWant);

其他回答

查找数组元素:

令arr = [ {name:"string 1", value:"this", other: "that"}, {name:"string 2", value:"this", other: "that"} ]; 令obj = arr。Find (o => o.name === 'string 1'); console.log (obj);


替换数组元素:

令arr = [ {name:"string 1", value:"this", other: "that"}, {name:"string 2", value:"this", other: "that"} ]; 令obj = arr。Find ((o, i) => { If (o.name === 'string 1') { Arr [i] = {name: '新字符串',value: 'this', other: 'that'}; 返回true;//停止搜索 } }); console.log (arr);

如果使用jQuery,请尝试$.grep()。

http://api.jquery.com/jquery.grep/

在ES6中,你可以使用Array.prototype。find(predicate, thisArg?)

array.find(x => x.name === 'string 1')

http://exploringjs.com/es6/ch_arrays.html#_searching-for-array-elements https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find

然后替换该对象(并使用另一个很酷的ES6方法填充),你可以这样做:

let obj = array.find(x => x.name === 'string 1');
let index = array.indexOf(obj);
array.fill(obj.name='some new string', index, index++);
function getValue(){
    for(var i = 0 ; i< array.length; i++){
        var obj = array[i];
        var arr = array["types"];
        for(var j = 0; j<arr.length;j++ ){
            if(arr[j] == "value"){
                return obj;
            }
        }

    }
}

这个答案适用于typescript / Angular 2,4,5 +

我在上面@rujmah的回答的帮助下得到了这个答案。他的回答带来了数组计数……然后查找该值并用另一个值替换它…

这个答案所做的只是抓取可能通过另一个模块/组件在另一个变量中设置的数组名…在这种情况下,我构建的数组有一个css名称stay-dates。它所做的就是提取这个名称然后允许我将它设置为另一个变量,像这样使用它。在我的例子中,它是一个html css类。

let obj = this.highlightDays。Find (x => x.css); let index = this.highlightDays.indexOf(obj); Console.log('这里我们看到highlightdays是什么',obj.css); let dayCss = obj.css;