我有这个功能,可以遍历某些对象属性。
它返回以下内容:
中央公园:0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1
杜松谷公园:2,0
高地公园:2,0,5,0
var parks = [
{
name: 'Central Park',
landmarks: [[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1]]
},
{
name: 'Juniper Valley Park',
landmarks: [2,0]
},
{
name: 'Highland Park',
landmarks: [[2,0],[5,0]]
},]
function showLandmarks() {
for (var i = 0, len = parks.length; i < len; i++) {
console.log(parks[i].name +': '+parks[i].landmarks);
}
}
showLandmarks();
我想根据返回的数据创建对。预期结果是:
中央公园:[[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[ 7,1]]
杜松谷公园:[2,0]
高地公园:[[2,0],[5,0]]
我在这里找到了几个主题,但只有部分信息。
答案 0 :(得分:0)
您可以将reduce
的原始数组var parks = [
{
name: "Central Park",
landmarks: [[0, 1], [1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1]]
},
{
name: "Juniper Valley Park",
landmarks: [2, 0]
},
{
name: "Highland Park",
landmarks: [[2, 0], [5, 0]]
}
];
const result = parks.reduce((acc, curr) => {
acc[curr.name] = curr.landmarks;
return acc;
}, {});
console.log(result);
替换为对象:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
print(url.absoluteString)
print("work")
return true
}
答案 1 :(得分:0)
与其在每个循环中将i
增加一个,不如使用parks[i]
和parks[i+1]
创建一个对,并将该对添加到累加器数组中,然后将i
增加两个。
您只需要检查parks[i+1]
是否存在。
答案 2 :(得分:0)
当您在两个对象之间使用+
时,它会在内部调用toString并进行更改,而不是连接转换后的字符串
console.log([1,2]+[3,4])
您可以使用Object.fromEntries
var parks = [{ name: 'Central Park',landmarks: [[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1]]},{ name: 'Juniper Valley Park',landmarks: [2,0]},{ name: 'Highland Park',landmarks: [[2,0],[5,0]]},]
let obj = Object.fromEntries(parks.map(({
name,
landmarks
}) => [name, landmarks]))
console.log(obj)
答案 3 :(得分:0)
通过Juniper条目进行管理非常困难,因为它的格式不相同,但是下面的代码可以解决问题:
<template>
<div class="container">
<div class="row">
<div class="col-md-6 mt-5 mx-auto">
<form v-on:submit.prevent="login">
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<div class="form-group">
<label for="email">Email Address</label>
<input type="email" v-model="email" class="form-control" name="email" placeholder="Enter Email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" v-model="password" class="form-control" name="password" placeholder="Enter Password">
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>
</div>
</div>
</div>
</template>
<script>
import axios from 'axios'
import router from '../router'
import EventBus from './EventBus'
export default {
data () {
return {
email: '',
password: ''
}
},
methods: {
login () {
axios.post('users/login', {
email: this.email,
password: this.password
}).then(res => {
localStorage.setItem('usertoken', res.data)
this.email = ''
this.password = ''
router.push({ name: 'Profile' })
}).catch(err => {
console.log(err)
})
this.emitMethod()
},
emitMethod () {
EventBus.$emit('logged-in', 'loggedin')
}
}
}
</script>
答案 4 :(得分:0)
这里不需要使用循环,可以在Array上使用forEach,而不必担心i
索引。当然,这假设您始终需要完整的数组。
我怀疑您实际上是希望在坐标周围打印[]
。
如果是这样,您可以使用map
将它们添加到每个坐标集中。
我要说的是,即使瞻博谷公园只有一个条目,该条目仍应位于数组中,以保持数据的一致性。
{
name: "Juniper Valley Park",
landmarks: [[2, 0]]
},
这意味着我们将不需要任何特殊逻辑来处理只有一个坐标的情况。
var parks = [
{
name: 'Central Park',
landmarks: [[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1]]
},
{
name: 'Juniper Valley Park',
landmarks: [[2,0]]
},
{
name: 'Highland Park',
landmarks: [[2,0],[5,0]]
},]
function showLandmarks() {
parks.forEach(park =>
console.log(park.name +': ['+ park.landmarks.map(landmark => '[' + landmark +']') + ']'));
}
showLandmarks();
输出: 中央公园:[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1] ]
杜松谷公园:[[2,0]]
高地公园:[[2,0],[5,0]]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
答案 5 :(得分:0)
如果不需要返回字符串而不是数组数组,则删除JSON.stringify。
const landmarks = (...points) => {
const result = [];
while (points.length) {
result.push(points.splice(0, 2));
}
return JSON.stringify(result);
};
// test
// Central Park:
console.log(landmarks(0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1));
// Juniper Valley Park:
console.log(landmarks(2, 0));
// Highland Park:
console.log(landmarks(2, 0, 5, 0));