簡體   English   中英

如何獲取與數組中的對象關聯的所有值?

[英]How to get all the values associated with an object in array?

var array = [
    { name:"test0", value:"0" },
    { name:"test1", value:"1" },
    { name:"test2", value:"2" },
    { name:"test0", value:"3" },
    { name:"test0", value:"4" }
];

如何使用 javascript 中的循環獲取與test0關聯的所有元素名稱的值?

樣品輸出

{0,3,4}

只需過濾值並映射所需的值。

array.filter允許您使用條件過濾數組的項目,因此使用i => i.name === 'test0'將返回一個新數組,其中僅獲取名稱為 'test0' 的值。 最后,使用map創建一個新數組,其值是提供的回調函數的結果。 因此,使用map(i => i.value)將返回每個(過濾后的)對象的屬性.value

如果您希望這些值是數字,請記住將它們轉換為整數。

 var array = [ { name:"test0", value:"0" }, { name:"test1", value:"1" }, { name:"test2", value:"2" }, { name:"test0", value:"3" }, { name:"test0", value:"4" } ]; var res = array.filter(i => i.name === 'test0').map(i => i.value); console.log(res);

否則,您可以使用 reduce 一次性完成:

 var array = [ { name:"test0", value:"0" }, { name:"test1", value:"1" }, { name:"test2", value:"2" }, { name:"test0", value:"3" }, { name:"test0", value:"4" } ]; var res = array.reduce((a,b) => { return b.name === 'test0' && a.push(+b.value), a; }, []); console.log(res);

在最后一個示例中,使用一元運算符 ( + ) 將值轉換為整數。

最后,根據要求,這是另一種不依賴任何數組原型的方法:

 var array = [ { name:"test0", value:"0" }, { name:"test1", value:"1" }, { name:"test2", value:"2" }, { name:"test0", value:"3" }, { name:"test0", value:"4" } ]; // init a new empty array. var res = []; for (var i = 0; i < array.length; i++) { var item = array[i]; // not mandatory but easy enough to read: acquire the current looped value. if (item.name === 'test0') { // if the looped item name is 'test0', join the if. res.push(Number(item.value)); // if so, push the item's value, and cast it to a number (using Number). } } console.log(res); // log the result.

您可以使用數組過濾器。 文檔在這里

const result = array.filter(a=> a.name === "test0");

console.log(result.map(w => w.value));

 var array = [ { name:"test0", value:"0" }, { name:"test1", value:"1" }, { name:"test2", value:"2" }, { name:"test0", value:"3" }, { name:"test0", value:"4" } ]; var test0 = array.filter(item => item.name == "test0").map(item => item.value); console.log(test0);

您可以過濾對象並通過映射獲得數值。

 var array = [{ name: "test0", value: "0" }, { name: "test1", value: "1" }, { name: "test2", value: "2" }, { name: "test0", value: "3" }, { name: "test0", value: "4" }], result = array .filter(({ name }) => name === 'test0') .map(({ value }) => +value); console.log(result);

 var array = [ { name:"test0", value:"0" }, { name:"test1", value:"1" }, { name:"test2", value:"2" }, { name:"test0", value:"3" }, { name:"test0", value:"4" } ]; var Rs=[]; for(var i in array){ if(array[i]["name"]=="test0") Rs.push(i);//Rs.push(array[i]["value"]); } console.log(Rs);

簡單的循環是野獸!

 var array = [ { name:"test0", value:"0" }, { name:"test1", value:"1" }, { name:"test2", value:"2" }, { name:"test0", value:"3" }, { name:"test0", value:"4" } ]; let output = array.reduce((acc, {name, value}) => { if(name === 'test0') { return [...acc, value]; } return acc; }, []); console.log(output)

create a generic function in which you just need to pass the key value and array and it will filter out the arry on the basic of parameters  

  var array = [
        { name:"test0", value:"0" },
        { name:"test1", value:"1" },
        { name:"test2", value:"2" },
        { name:"test0", value:"3" },
        { name:"test0", value:"4" }
    ];

    function filterList(keyValue, list) {
        let filteredList = [];
        for(let i = 0; i < list.length; i++) {
            if(list[i]["name"] === keyValue) {
                filteredList.push(list[i]["value"]);
            }
        }
        return filteredList;
    }

    console.log(filterList("test0", array));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM