Saya ingin untuk siklus melalui benda-benda yang terkandung di dalam sebuah array dan perubahan sifat-sifat masing-masing. Jika saya melakukan ini:
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j]);
}
Konsol harus membawa setiap objek di dalam array, kan? Tapi pada kenyataannya itu hanya menampilkan objek pertama. jika saya console log array di luar loop, semua benda-benda yang muncul sehingga ada's pasti lebih di sana.
Anyway, di sini's masalah berikutnya. Bagaimana cara mengakses, misalnya Object1.x dalam array, menggunakan loop?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Ini kembali "undefined." Lagi log konsol luar lingkaran memberitahu saya bahwa semua benda memiliki nilai-nilai untuk "x". Bagaimana cara mengakses properti ini dalam loop?
Saya direkomendasikan di tempat lain untuk menggunakan array terpisah untuk masing-masing properti, tapi saya ingin memastikan saya've habis ini jalan dulu.
Terima kasih!
Menggunakan forEach untuk built-in fungsi array. Array.forEach()
:
yourArray.forEach(function (arrayItem) {
var x = arrayItem.prop1 + 2;
console.log(x);
});
Beberapa kasus penggunaan perulangan melalui array di pemrograman fungsional dengan cara dalam JavaScript:
const myArray = [{x:100}, {x:200}, {x:300}];
myArray.forEach((element, index, array) => {
console.log(element.x); // 100, 200, 300
console.log(index); // 0, 1, 2
console.log(array); // same myArray object 3 times
});
Catatan: Array.prototipe.forEach() tidak fungsional cara tegasnya, sebagai fungsi yang dibutuhkan sebagai input parameter ini tidak seharusnya mengembalikan nilai, yang dengan demikian tidak dapat dianggap sebagai fungsi murni.
const people = [
{name: 'John', age: 23},
{name: 'Andrew', age: 3},
{name: 'Peter', age: 8},
{name: 'Hanna', age: 14},
{name: 'Adam', age: 37}];
const anyAdult = people.some(person => person.age >= 18);
console.log(anyAdult); // true
const myArray = [{x:100}, {x:200}, {x:300}];
const newArray= myArray.map(element => element.x);
console.log(newArray); // [100, 200, 300]
Catatan: peta() metode menciptakan sebuah array baru dengan hasil memanggil fungsi yang disediakan pada setiap elemen dalam pemanggilan array.
const myArray = [{x:100}, {x:200}, {x:300}];
const sum = myArray.map(element => element.x).reduce((a, b) => a + b, 0);
console.log(sum); // 600 = 0 + 100 + 200 + 300
const average = sum / myArray.length;
console.log(average); // 200
const myArray = [{x:100}, {x:200}, {x:300}];
const newArray= myArray.map(element => {
return {
...element,
x: element.x * 2
};
});
console.log(myArray); // [100, 200, 300]
console.log(newArray); // [200, 400, 600]
const people = [
{name: 'John', group: 'A'},
{name: 'Andrew', group: 'C'},
{name: 'Peter', group: 'A'},
{name: 'James', group: 'B'},
{name: 'Hanna', group: 'A'},
{name: 'Adam', group: 'B'}];
const groupInfo = people.reduce((groups, person) => {
const {A = 0, B = 0, C = 0} = groups;
if (person.group === 'A') {
return {...groups, A: A + 1};
} else if (person.group === 'B') {
return {...groups, B: B + 1};
} else {
return {...groups, C: C + 1};
}
}, {});
console.log(groupInfo); // {A: 3, C: 1, B: 2}
const myArray = [{x:100}, {x:200}, {x:300}];
const newArray = myArray.filter(element => element.x > 250);
console.log(newArray); // [{x:300}]
Catatan: filter() metode menciptakan sebuah array baru dengan semua elemen yang lulus tes dilaksanakan oleh fungsi yang disediakan.
const people = [
{ name: "John", age: 21 },
{ name: "Peter", age: 31 },
{ name: "Andrew", age: 29 },
{ name: "Thomas", age: 25 }
];
let sortByAge = people.sort(function (p1, p2) {
return p1.age - p2.age;
});
console.log(sortByAge);
const people = [ {name: "john", age:23},
{name: "john", age:43},
{name: "jim", age:101},
{name: "bob", age:67} ];
const john = people.find(person => person.name === 'john');
console.log(john);
Array.prototipe.menemukan() method ini mengembalikan nilai elemen pertama dalam array yang memenuhi disediakan pengujian fungsi.
Dalam ECMAScript 2015 alias ES6, anda dapat menggunakan untuk..loop untuk loop melalui array dari objek.
for (let item of items) {
console.log(item); // Will display contents of the object inside the array
}
Pada saat posting ini menjawab, dukungan ini cukup tidak ada untuk Internet Explorer, tetapi melalui penggunaan transpiler seperti Traceur atau Babel, anda dapat menggunakan fitur Javascript seperti ini tanpa benar-benar harus khawatir tentang apa browser mendukung apa.
Berikut ini's contoh mengenai bagaimana anda dapat melakukannya :)
var students = [{
name: "Mike",
track: "track-a",
achievements: 23,
points: 400,
},
{
name: "james",
track: "track-a",
achievements: 2,
points: 21,
},
]
students.forEach(myFunction);
function myFunction(item, index) {
for (var key in item) {
console.log(item[key])
}
}
Perulangan melalui sebuah array dari objek yang cukup mendasar fungsi. Ini adalah apa yang bekerja untuk saya.
var person = [];
person[0] = {
firstName: "John",
lastName: "Doe",
age: 60
};
var i, item;
for (i = 0; i < person.length; i++) {
for (item in person[i]) {
document.write(item + ": " + person[i][item] + "<br>");
}
}
It's benar-benar sederhana menggunakan forEach metode sejak ES5+. Anda dapat langsung mengubah masing-masing properti dari setiap objek di dalam array.
myArray.forEach(function (arrayElem){
arrayElem = newPropertyValue;
});
Jika anda ingin mengakses properti tertentu pada masing-masing objek:
myArray.forEach(function (arrayElem){
arrayElem.nameOfYourProperty = newPropertyValue;
});
Ini akan bekerja. Perulangan menyeluruh array(yourArray) . Kemudian loop melalui sifat langsung dari masing-masing objek (eachObj) .
yourArray.forEach( function (eachObj){
for (var key in eachObj) {
if (eachObj.hasOwnProperty(key)){
console.log(key,eachObj[key]);
}
}
});
Jawaban yang diterima menggunakan fungsi normal. Jadi posting kode yang sama dengan sedikit modifikasi menggunakan panah pada fungsi forEach
yourArray.forEach(arrayItem => {
var x = arrayItem.prop1 + 2;
console.log(x);
});
Juga di $.masing-masing anda dapat menggunakan panah fungsi seperti di bawah ini
$.each(array, (item, index) => {
console.log(index, item);
});
const jobs = [
{
name: "sipher",
family: "sipherplus",
job: "Devops"
},
{
name: "john",
family: "Doe",
job: "Devops"
},
{
name: "jim",
family: "smith",
job: "Devops"
}
];
const txt =
` <ul>
${jobs.map(job => `<li>${job.name} ${job.family} -> ${job.job}</li>`).join('')}
</ul>`
;
document.body.innerHTML = txt;
Berhati-hati tentang kembali Kutu (`)
var c = {
myProperty: [
{ name: 'this' },
{ name: 'can' },
{ name: 'get' },
{ name: 'crazy' }
]
};
c.myProperty.forEach(function(myProperty_element) {
var x = myProperty_element.name;
console.log('the name of the member is : ' + x);
})
Ini adalah salah satu cara bagaimana saya bisa mencapai itu.