[英]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.